【问题标题】:What makes an input vulnerable to XSS?是什么让输入易受 XSS 攻击?
【发布时间】:2010-05-25 15:04:20
【问题描述】:

我一直在阅读有关 XSS 的文章,并制作了一个带有文本并提交输入的简单表单,但是当我在其上执行 <script>alert();</script> 时,没有任何反应,服务器获取了该字符串,仅此而已。

我该怎么做才能让它变得脆弱? (那我就学会不该做的事嘿嘿)

干杯。

【问题讨论】:

  • 您是否使用任何服务器端语言?

标签: javascript html security xss


【解决方案1】:

确实只是让服务器输出它,以便输入字符串有效地嵌入到返回给客户端的 HTML 源中。

PHP 示例:

<!doctype html>
<html lang="en">
    <head><title>XSS test</title></head>
    <body>
        <form><input type="text" name="xss"><input type="submit"></form>
        <p>Result: <?= $_GET['xss'] ?></p>
    </body>
</html>

JSP 示例:

<!doctype html>
<html lang="en">
    <head><title>XSS test</title></head>
    <body>
        <form><input type="text" name="xss"><input type="submit"></form>
        <p>Result: ${param.xss}</p>
    </body>
</html>

或者,您可以重新显示输入元素中的值,这也很常见:

<input type="text" name="xss" value="<?= $_GET['xss'] ?>">

分别

<input type="text" name="xss" value="${param.xss}">

这种“奇怪”的攻击字符串如"/&gt;&lt;script&gt;alert('xss')&lt;/script&gt;&lt;br class=" 将起作用,因为服务器会将其渲染为

<input type="text" name="xss" value=""/><script>alert('xss')</script><br class="">

XSS 预防解决方案包括分别用于 PHP 和 JSP 的 htmlspecialchars()fn:escapeXml()。这些将替换&amp;lt;&amp;gt;"&amp;lt;&amp;gt;&amp;quot;,这样最终用户的输入最终不会真正嵌入到HTML源代码中,而是显示为它被输入了。

【讨论】:

    【解决方案2】:

    让服务器将输入输出回客户端。

    【讨论】:

    • 我读到“让服务器将输入输出回客户端。”,然后想哇,这是对这个问题最简单、最可靠的答案。
    【解决方案3】:

    您应该“注入”脚本。因此,如果您有文本输入,则应输入以下表格:

    " /> <script>alert();</script>
    

    这样你首先关闭现有 HTML 的属性,然后注入你自己的代码。这个想法是避开引号。

    【讨论】:

    • 这不是他要问的。他知道如何进行攻击,他在问是什么让输入易受攻击。
    【解决方案4】:

    三个简单的事情:

    1. 如果您在某些时候没有将不受信任的数据输出到页面,那么 XSS 就没有机会
    2. 应根据白名单验证所有不受信任的数据(表单、查询字符串、标题等),以确保其在可接受的范围内
    3. 您在屏幕上的所有输出都应使用适当的库(即针对 .NET 的 Anti-XSS)进行结束编码到适当的语言(HTML、CSS、JS 等)。

    OWASP Top 10 for .NET developers part 2: Cross-Site Scripting (XSS) 中的示例的更多信息。

    【讨论】:

      【解决方案5】:

      Google 制作了一个非常棒的教程,涵盖了 XSS 和其他安全漏洞 here。它可以帮助您了解这些问题在实际应用程序中是如何被利用的。

      【讨论】:

        猜你喜欢
        • 2016-04-18
        • 2015-12-31
        • 1970-01-01
        • 2016-04-29
        • 1970-01-01
        • 1970-01-01
        • 2011-05-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多