Web应用程序跨站点脚本

时间:2011-04-25 17:03:48

标签: xss

我的网站http://www.imayne.com似乎有这个问题,由MacAfee验证。有人可以告诉我如何解决这个问题吗? (标题)

它说:

一般解决方案:

当您接受用户输入时,如果您将数据显示回客户端,请确保您是HTML编码潜在恶意字符。

通过执行以下操作,确保对参数和用户输入进行了清理:

  • 删除<输入并替换为“& lt”;
  • 删除>输入并替换为“& gt”;
  • 删除'输入并替换为“&'”;
  • 删除“输入并替换为”“”;
  • 删除)输入并替换为“)”;
  • 删除(输入并替换为“(”;
  • 我似乎无法显示实际代码。该网站正在展示其他内容。

    我不是网络开发者,但我可以做一点。我试图符合PCI标准。

    3 个答案:

    答案 0 :(得分:2)

    让我回答你的问题并给你一些建议。正确地防止XSS需要通过在用户输入点定义可接受值的白名单来完成,而不是黑名单的不允许值。在你开始考虑编码之前,这首先需要发生。

    进行编码后,使用所选框架中的库,不要自己尝试进行字符替换。在OWASP Top 10 for .NET developers part 2: Cross-Site Scripting (XSS)中有关于此的更多信息(不要担心它是面向.NET的,所有框架的概念都是一致的)。

    现在提供一些友好的建议:尽快获得一些专家支持。您在电子商务网站中有一个根本明显的反映XSS漏洞,根据您对此页面的评论,这不是您想要自己解决的问题。这个漏洞的明显性质表明你很可能在网站上遇到更多模糊的问题。由你自己承认,“你在这里是一个菜鸟”,你不会获得足够的安全网站所需的能力,例如一夜之间。

    答案 1 :(得分:1)

    您所描述的更改类型通常通过HTML编码功能以多种语言完成。什么是写入的网站。如果这是一个ASP.NET网站,本文可能有所帮助:

    http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2.aspx

    在PHP中使用此函数来包装所有正在输出的文本:

    http://ch2.php.net/manual/en/function.htmlentities.php

    您可以在任何地方看到echo(...)或print(...),您可以将其替换为:

    echo(htmlentities( $whateverWasHereOriginally, ENT_COMPAT));
    

    请查看页面中间的示例部分以获取其他指导。

    答案 2 :(得分:0)

    完全按照这些步骤,你很高兴。主要是确保您不会将用户提交给您的任何内容视为代码(HTML,SQL,Javascript或其他)。如果您未能正确清理输入,则存在脚本注入的风险。

    如果您想查看此问题的一个简单示例,请搜索

    <span style="color:red">red</span>
    
    在您的网站上

    ,您会看到回显的搜索字词为红色。