如何防止脚本被检测_如何防范脚本攻击游戏网站

hacker|
190

如何防止跨站点脚本攻击

你好~

XSS漏洞产生的原因:

跨站点脚本的主要原因是程序猿对用户的信任。开发人员轻松地认为用户永远不会试图执行什么出格的事情,所以他们创建应用程序,却没有使用任何额外的代码来过滤用户输入以阻止任何恶意活动。另一个原因是,这种攻击有许多变体,用制造出一种行之有效的XSS过滤器是一件比较困难的事情。

但是这只是相对的,对用户输入数据的”编码”和”过滤”在任何时候都是很重要的,我们必须采取一些针对性的手段对其进行防御。

如何创造一个良好的XSS过滤器来阻止大多数XSS攻击代码

1 .需要重点”编码”和”过滤”的对象

The URL

HTTP referrer objects

GET parameters from a form

POST parameters from a form

Window.location

Document.referrer

document.location

document.URL

document.URLUnencoded

cookie data

headers data

database data

防御XSS有一个原则:

以当前的应用系统为中心,所有的进入应用系统的数据都看成是输入数据(包括从FORM表单或者从数据库获取到的数据),所有从当前应用系统流出的数据都看作是输出(包括输出到用户浏览器或向数据库写入数据)

对输入的数据进行”过滤”,对输出数据进行”编码”。这里的”编码”也要注意,必须针对数据具体的上下文语境进行针对性的编码。例如数据是输出到HTML中的那就要进行HtmlEncode,如果数据是输出到javascript代码中进行拼接的,那就要进行javascriptEncode。

如果不搞清楚数据具体输出的语境,就有可能因为HtmlParser()和javascriptParser()两种解析引擎的执行先后问题导致看似严密的”编码”形同虚设。

2. HtmlEncode HTML编码

它的作用是将字符转换成HTMLEntities,对应的标准是ISO-8859-1

为了对抗XSS,在HtmlEncode中要求至少转换以下字符:

--

--

--

" -- "

' -- '

/ -- /

在PHP中:

htmlentities

htmlspecialchars

3. javascriptEncode javascript”编码”

javascriptEncode与HtmlEncode的编码方法不同,HtmlEncode是去编码,而javascriptEncode更多的像转义,它需要使用”\”对特殊字符进行转义。从原理上来讲,这都符合编码函数的一个大原则: 将数据和代码区分开,因为对于HTML Tag来说,我们对其进行”可视化(转换成可以见字符)”的编码可以将数据和HTML的界限分开。而对于javascript来说,我们除了要进行编码之外,还需要对特殊字符进行转义,这样攻击输入的用于”闭合”的特殊字符就无法发挥作用,从而避免XSS攻击,除此之外,在对抗XSS时,还要求输出的变量必须在引号内部,以避免造成安全问题。

escape()

该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ – _ + . / 。其他所有的字符都会被转义序列(十六进制\xHH)替换。

利用这个编码函数,不仅能防御XSS攻击,还可以防御一些command注入。

一些开源的防御XSS攻击的代码库:

PHP AntiXSS

这是一个不错的PHP库,可以帮助开发人员增加一层保护,防止跨站脚本漏洞。

xss_clean.php filter

HTML Purifier

xssprotect

XSS HTML Filter

原文地址:

希望可以帮助到你~望采纳哦~谢谢~

如何避免网站被攻击?

如何做好网站安全防御:

(一)网站数据定期备份:定期备份网站数据可以用来恢复被攻击的网站,即便网站被攻击或误操作删除一些网站信息,可随时恢复。为此网站运维,网站备份才是硬道理。

(二)网站程序系统更新:网站程序和服务器系统定期更新使用的版本、补丁,可消除一些存在的安全漏洞,以防给黑客带来可趁之机。

(三)定期查杀网站病毒:定期查杀网站病毒可以防止黑客的进一步破话或窃取网站数据,也可以及时删除入侵的网站后门漏洞文件。

(四)网站文件权限设置:对网站服务器文件合理的设定权限,比如部分执行程序的重要文件应当取消写入或执行权限,可避免黑客篡改网站数据。

(五)网站域名开启https数据安全传输协议和CDN速,开启https和CDN,可以更快的、安全的运行网站,可以隐藏自己的网站真实ip,一定程度上预防DDoS攻击、CC攻击、域名劫持等安全隐患。

(六)网站如何防御DDos攻击和CC攻击?可使用高仿服务器:高防服务器具有高性能、高带宽、高防御的特点,在安全上、运行上自身具备一定维护的基础后盾,给后期维护带来了不少的方便,但是造价高昂,这里主机吧推荐用百度云加速,百度云加速是百度旗下为网站提供一站式加速、安全防护和搜索引擎优化的产品。百度云加速正为数十万用户的近百万网站提供CDN、网络安全和SEO服务。每天处理十亿级的PV流量及数百亿TB的数据流量,并提供市场顶尖水平的稳定性和抗攻击能力。相关链接

(七)定期更新管理密码:网站密码可被离职程序员记录或黑客入侵暴力破解获取,定期更新网站后台密码和远程服务器登陆密码可有效预防数据损失。

(八)定期查看网站日志:网站运行数据的记录都在网站日志里记载,开启并定期查看网站日志,清晰地了网站运行的轨迹,是网站维护的重要方式之一。

网站受到了XSS攻击,有什么办法?

一.跨站脚本攻击(XSS)

  跨站脚本攻击(XSS,Cross-site scripting)是最常见和基本的攻击WEB网站的方法。攻击者在网页上发布包含攻击性代码的数据。当浏览者看到此网页时,特定的脚本就会以浏览者用 户的身份和权限来执行。通过XSS可以比较容易地修改用户数据、窃取用户信息,以及造成其它类型的攻击,例如CSRF攻击

   常见解决办法:确保输出到HTML页面的数据以HTML的方式被转义

    出错的页面的漏洞也可能造成XSS攻击.比如页面/gift/giftList.htm?page=2找不到,出错页面直接把该url原样输出,如果攻击者在url后面加上攻击代码发给受害者,就有可能出现XSS攻击

二. 跨站请求伪造攻击(CSRF)

   跨站请求伪造(CSRF,Cross-site request forgery)是另一种常见的攻击。攻击者通过各种方法伪造一个请求,模仿用户提交表单的行为,从而达到修改用户的数据,或者执行特定任务的目的。为了 假冒用户的身份,CSRF攻击常常和XSS攻击配合起来做,但也可以通过其它手段,例如诱使用户点击一个包含攻击的链接

  解决的思路有:

    1.采用POST请求,增加攻击的难度.用户点击一个链接就可以发起GET类型的请求。而POST请求相对比较难,攻击者往往需要借助javascript才能实现

    2.对请求进行认证,确保该请求确实是用户本人填写表单并提交的,而不是第三者伪造的.具体可以在会话中增加token,确保看到信息和提交信息的是同一个人

三.Http Heads攻击

 凡是用浏览器查看任何WEB网站,无论你的WEB网站采用何种技术和框架,都用到了HTTP协议.HTTP协议在Response header和content之间,有一个空行,即两组CRLF(0x0D 0A)字符。这个空行标志着headers的结束和content的开始。“聪明”的攻击者可以利用这一点。只要攻击者有办法将任意字符“注入”到 headers中,这种攻击就可以发生

 以登陆为例:有这样一个url:

当登录成功以后,需要重定向回page参数所指定的页面。下面是重定向发生时的response headers.

HTTP/1.1 302 Moved Temporarily

Date: Tue, 17 Aug 2010 20:00:29 GMT

Server: Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635

Location:

假如把URL修改一下,变成这个样子:

那么重定向发生时的reponse会变成下面的样子:

HTTP/1.1 302 Moved Temporarily

Date: Tue, 17 Aug 2010 20:00:29 GMT

Server: Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635

Location: ;CRLF

CRLF

scriptalert('hello')/script

    这个页面可能会意外地执行隐藏在URL中的javascript。类似的情况不仅发生在重定向(Location header)上,也有可能发生在其它headers中,如Set-Cookie header。这种攻击如果成功的话,可以做很多事,例如:执行脚本、设置额外的cookie(CRLFSet-Cookie: evil=value)等。

   避免这种攻击的方法,就是过滤所有的response headers,除去header中出现的非法字符,尤其是CRLF。

    服务器一般会限制request headers的大小。例如Apache server默认限制request header为8K。如果超过8K,Aapche Server将会返回400 Bad Request响应:

    对于大多数情况,8K是足够大的。假设应用程序把用户输入的某内容保存在cookie中,就有可能超过8K.攻击者把超过8k的header链接发给受害 者,就会被服务器拒绝访问.解决办法就是检查cookie的大小,限制新cookie的总大写,减少因header过大而产生的拒绝访问攻击

四.Cookie攻击

    通过Java Script非常容易访问到当前网站的cookie。你可以打开任何网站,然后在浏览器地址栏中输 入:javascript:alert(doucment.cookie),立刻就可以看到当前站点的cookie(如果有的话)。攻击者可以利用这个特 性来取得你的关键信息。例如,和XSS攻击相配合,攻击者在你的浏览器上执行特定的Java Script脚本,取得你的cookie。假设这个网站仅依赖cookie来验证用户身份,那么攻击者就可以假冒你的身份来做一些事情。

    现在多数浏览器都支持在cookie上打上HttpOnly的标记,凡有这个标志的cookie就无法通过Java Script来取得,如果能在关键cookie上打上这个标记,就会大大增强cookie的安全性

五.重定向攻击

  一种常用的攻击手段是“钓鱼”。钓鱼攻击者,通常会发送给受害者一个合法链接,当链接被点击时,用户被导向一个似是而非的非法网站,从而达到骗取用户信 任、窃取用户资料的目的。为防止这种行为,我们必须对所有的重定向操作进行审核,以避免重定向到一个危险的地方.常见解决方案是白名单,将合法的要重定向 的url加到白名单中,非白名单上的域名重定向时拒之,第二种解决方案是重定向token,在合法的url上加上token,重定向时进行验证.

六.上传文件攻击

  1.文件名攻击,上传的文件采用上传之前的文件名,可能造成:客户端和服务端字符码不兼容,导致文件名乱码问题;文件名包含脚本,从而造成攻击.

   2.文件后缀攻击.上传的文件的后缀可能是exe可执行程序,js脚本等文件,这些程序可能被执行于受害者的客户端,甚至可能执行于服务器上.因此我们必须过滤文件名后缀,排除那些不被许可的文件名后缀.

  3.文件内容攻击.IE6有一个很严重的问题 , 它不信任服务器所发送的content type,而是自动根据文件内容来识别文件的类型,并根据所识别的类型来显示或执行文件.如果上传一个gif文件,在文件末尾放一段js攻击脚本,就有可 能被执行.这种攻击,它的文件名和content type看起来都是合法的gif图片,然而其内容却包含脚本,这样的攻击无法用文件名过滤来排除,而是必须扫描其文件内容,才能识别。

如何正确防御xss攻击?

防御xss攻击需要重点掌握以下原则:

在将不可信数据插入到HTML标签之间时,对这些数据进行HTML Entity编码。

在将不可信数据插入到HTML属性里时,对这些数据进行HTML属性编码。

在将不可信数据插入到SCRIPT里时,对这些数据进行SCRIPT编码。

在将不可信数据插入到Style属性里时,对这些数据进行CSS编码。

在将不可信数据插入到HTML URL里时,对这些数据进行URL编码。

使用富文本时,使用XSS规则引擎进行编码过滤

XSS攻击,即跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,XSS是一种经常出现在web应用中的计算机安全。

网络安全攻击方法分为

1、跨站脚本-XSS

相关研究表明,跨站脚本攻击大约占据了所有攻击的40%,是最为常见的一类网络攻击。但尽管最为常见,大部分跨站脚本攻击却不是特别高端,多为业余网络罪犯使用别人编写的脚本发起的。

跨站脚本针对的是网站的用户,而不是Web应用本身。恶意黑客在有漏洞的网站里注入一段代码,然后网站访客执行这段代码。此类代码可以入侵用户账户,激活木马程序,或者修改网站内容,诱骗用户给出私人信息。

防御方法:设置Web应用防火墙可以保护网站不受跨站脚本攻击危害。WAF就像个过滤器,能够识别并阻止对网站的恶意请求。购买网站托管服务的时候,Web托管公司通常已经为你的网站部署了WAF,但你自己仍然可以再设一个。

2、注入攻击

开放Web应用安全项目新出炉的十大应用安全风险研究中,注入漏洞被列为网站最高风险因素。SQL注入方法是网络罪犯最常见的注入方法。

注入攻击方法直接针对网站和服务器的数据库。执行时,攻击者注入一段能够揭示隐藏数据和用户输入的代码,获得数据修改权限,全面俘获应用。

防御方法:保护网站不受注入攻击危害,主要落实到代码库构建上。比如说:缓解SQL注入风险的首选方法就是始终尽量采用参数化语句。更进一步,可以考虑使用第三方身份验证工作流来外包你的数据库防护。

3、模糊测试

开发人员使用模糊测试来查找软件、操作系统或网络中的编程错误和安全漏洞。然而,攻击者可以使用同样的技术来寻找你网站或服务器上的漏洞。

采用模糊测试方法,攻击者首先向应用输入大量随机数据让应用崩溃。下一步就是用模糊测试工具发现应用的弱点,如果目标应用中存在漏洞,攻击者即可展开进一步漏洞利用。

防御方法:对抗模糊攻击的最佳方法就是保持更新安全设置和其他应用,尤其是在安全补丁发布后不更新就会遭遇恶意黑客利用漏洞的情况下。

4、零日攻击

零日攻击是模糊攻击的扩展,但不要求识别漏洞本身。此类攻击最近的案例是谷歌发现的,在Windows和chrome软件中发现了潜在的零日攻击。

在两种情况下,恶意黑客能够从零日攻击中获利。第一种情况是:如果能够获得关于即将到来的安全更新的信息,攻击者就可以在更新上线前分析出漏洞的位置。第二种情况是:网络罪犯获取补丁信息,然后攻击尚未更新系统的用户。这两种情况,系统安全都会遭到破坏,至于后续影响程度,就取决于黑客的技术了。

防御方法:保护自己和自身网站不受零日攻击影响最简便的方法,就是在新版本发布后及时更新你的软件。

5、路径(目录)遍历

路径遍历攻击针对Web

root文件夹,访问目标文件夹外部的未授权文件或目录。攻击者试图将移动模式注入服务器目录,以便向上爬升。成功的路径遍历攻击能够获得网站访问权,染指配置文件、数据库和同一实体服务器上的其他网站和文件。

防御方法:网站能否抵御路径遍历攻击取决于你的输入净化程度。这意味着保证用户输入安全,并且不能从你的服务器恢复出用户输入内容。最直观的建议就是打造你的代码库,这样用户的任何信息都不会传输到文件系统API。即使这条路走不通,也有其他技术解决方案可用。

6、分布式拒绝服务-DDOS

DDoS攻击本身不能使恶意黑客突破安全措施,但会令网站暂时或永久掉线。相关数据显示:单次DDOS攻击可令小企业平均损失12.3万美元,大型企业的损失水平在230万美元左右。

DDoS旨在用请求洪水压垮目标Web服务器,让其他访客无法访问网站。僵尸网络通常能够利用之前感染的计算机从全球各地协同发送大量请求。而且,DDoS攻击常与其他攻击方法搭配使用;攻击者利用DDOS攻击吸引安全系统火力,从而暗中利用漏洞入侵系统。

防御方法:保护网站免遭DDOS攻击侵害一般要从几个方面着手:首先,需通过内容分发网络、负载均衡器和可扩展资源缓解高峰流量。其次,需部署Web应用防火墙,防止DDOS攻击隐蔽注入攻击或跨站脚本等其他网络攻击方法。

7、中间人攻击

中间人攻击常见于用户与服务器间传输数据不加密的网站。作为用户,只要看看网站的URL是不是以https开头就能发现这一潜在风险了,因为HTTPS中的s指的就是数据是加密的,缺了S就是未加密。

攻击者利用中间人类型的攻击收集信息,通常是敏感信息。数据在双方之间传输时可能遭到恶意黑客拦截,如果数据未加密,攻击者就能轻易读取个人信息、登录信息或其他敏感信息。

防御方法:在网站上安装安全套接字层就能缓解中间人攻击风险。SSL证书加密各方间传输的信息,攻击者即使拦截到了也无法轻易破解。现代托管提供商通常已经在托管服务包中配置了SSL证书。

8、暴力破解攻击

暴力破解攻击是获取Web应用登录信息相当直接的一种方式。但同时也是非常容易缓解的攻击方式之一,尤其是从用户侧加以缓解最为方便。

暴力破解攻击中,攻击者试图猜解用户名和密码对,以便登录用户账户。当然,即使采用多台计算机,除非密码相当简单且明显,否则破解过程可能需耗费几年时间。

防御方法:保护登录信息的最佳办法,是创建强密码,或者使用双因子身份验证。作为网站拥有者,你可以要求用户同时设置强密码和2FA,以便缓解网络罪犯猜出密码的风险。

9、使用未知代码或第三方代码

尽管不是对网站的直接攻击,使用由第三方创建的未经验证代码,也可能导致严重的安全漏洞。

代码或应用的原始创建者可能会在代码中隐藏恶意字符串,或者无意中留下后门。一旦将受感染的代码引入网站,那就会面临恶意字符串执行或后门遭利用的风险。其后果可以从单纯的数据传输直到网站管理权限陷落。

防御方法:想要避免围绕潜在数据泄露的风险,让你的开发人员分析并审计代码的有效性。

10、网络钓鱼

网络钓鱼是另一种没有直接针对网站的攻击方法,但我们不能将它除在名单之外,因为网络钓鱼也会破坏你系统的完整性。

网络钓鱼攻击用到的标准工具就是电子邮件。攻击者通常会伪装成其他人,诱骗受害者给出敏感信息或者执行银行转账。此类攻击可以是古怪的419骗局,或者涉及假冒电子邮件地址、貌似真实的网站和极具说服力用语的高端攻击。

防御方法:缓解网络钓鱼骗局风险最有效的方法,是培训员工和自身,增强对此类欺诈的辨识能力。保持警惕,总是检查发送者电子邮件地址是否合法,邮件内容是否古怪,请求是否不合常理。

XSS攻击如何实现以及保护Web站点免受跨站点脚本攻击

使用工具和测试防范跨站点脚本攻击. 跨站点脚本(XSS)攻击是当今主要的攻击途径之一,利用了Web站点的漏洞并使用浏览器来窃取cookie或进行金融交易。跨站点脚本漏洞比较常见,并且要求组织部署涵盖威胁建模、扫描工具和大量安全意识在内的周密的安全开发生命周期,以便达到最佳的XSS防护和预防。本文解释了跨站点脚本攻击是如何实现并且就如何保护企业Web应用免于这种攻击提供了建议。 跨站点脚本(XSS)允许攻击者通过利用因特网服务器的漏洞来发送恶意代码到其他用户。攻击者利用跨站点脚本(XSS)攻击向那些看似可信任的链接中注入恶意代码。当用户点击了链接后,内嵌的程序将被提交并且会在用户的电脑上执行,这会使黑客获取访问权限并偷走敏感数据。攻击者使用XSS来攻击受害者机器上的漏洞并且传输恶意代码而不是攻击系统本身。 通过用户输入的数据返回错误消息的Web表格,攻击者可以修改控制Web页面的HTML代码。黑客能够在垃圾信息中的链接里插入代码或者使用欺诈邮件来诱使用户对其身份产生信任。 例如攻击者可以发送带有URL的邮件给受害人,这个URL指向一个Web站点并且提供浏览器脚本作为输入;或者在博客或诸如Facebook、Twitter这样的社交网站上发布恶意URL链接。当用户点击这个链接时,该恶意站点以及脚本将会在其浏览器上运行。浏览器不知道脚本是恶意的并将盲目地运行这个程序,这转而允许攻击者的浏览器脚本使用站点的功能来窃取cookie或者冒充合法的用户来完成交易。 一些通常的跨站点脚本预防的最佳实践包括在部署前测试应用代码,并且以快速、简明的方式修补缺陷和漏洞。Web应用开发人员应该过滤用户的输入来移除可能的恶意字符和浏览器脚本,并且植入用户输入过滤代码来移除恶意字符。通常管理员也可以配置浏览器只接受来自信任站点的脚本或者关闭浏览器的脚本功能,尽管这样做可能导致使用Web站点的功能受限。 随着时代的进步黑客们变得更加先进,使用收集的工具集来加快漏洞攻击进程。这意味着仅仅部署这些通常的XSS预防实践是不够的,保护和预防过程必须从底层开始并持续提升。预防过程必须在开发阶段开始,建立在一个牢靠、安全的开发生命周期方法论之上的Web应用在发布版本中不太可能暴露出漏洞。这样以来,不仅提升了安全性,也改善了可用性而且缩减了维护的总体费用,因为在现场环境中修补问题比在开发阶段会花费更多。 威胁建模在XSS预防中也是重要的一个方面,应该纳入到每个组织的安全开发生命周期当中。威胁建模评估和辨识在开发阶段中应用程序面临的所有的风险,来帮助Web开发人员更好地理解需要什么样的保护以及攻击一旦得逞将对组织产生怎样的影响。要辨识一个特定应用的威胁级别,考虑它的资产以及它访问的敏感信息量是十分重要的。这个威胁建模过程将确保在应用的设计和开发过程中战略性地融合了安全因素,并且增强了Web开发人员的安全意识。 对于大型项目的Web开发人员来说,源代码扫描工具和Web应用漏洞扫描器是提高效率和减少工作量的通常选择。

0条大神的评论

发表评论