防止跨站点脚本攻击

时间:2015-02-02 13:40:39

标签: c# asp.net scripting xss

我被告知解决XSS脚本攻击。所以这是场景,

有关您的理解,请参阅图片 Image 1Image 2Image 3

我想要的是,这里编写的任何脚本都应该被编码,并且应该重定向到我创建的错误页面。

现在,使用我当前的代码,当编写任何脚本时,页面将重定向到Error页面,但我希望该脚本也能进行编码。

请参阅我的代码,这会使这种情况发生,也请告诉我应该在哪里进行更改以便对其进行编码。

protected void btnSearch_Click(object sender, ImageClickEventArgs e)
{
    if(Regex.IsMatch(txtSearch.Text, "[^a-zA-Z0-9 %  +]"))
        {   
            Response.Redirect("Error.aspx");
        }
        else
        {
            String ClearSpaces = Regex.Replace(txtSearch.Text, @"\s+", " ");
            Response.Redirect("search.aspx?tx=" + HttpUtility.UrlEncode(ClearSpaces));
        }
}

1 个答案:

答案 0 :(得分:0)

从你的另一个问题再来一遍:) 如果你在实现其他人的解决方案后问这个问题,似乎就像我告诉你的那样,XSS没有得到缓解。 我不明白你的意思是“任何写在这里的脚本应该被编码并且应该重定向到我创建的错误页面” - 如果你重定向到错误页面,用户的输入不会以任何方式呈现。

正如我在其他帖子中告诉你的那样,如果你在这里写的这段代码不是search.aspx的一部分,那么直接访问search.aspx会绕过这个验证。 您应该将此验证复制到search.aspx,并验证QueryString [“tx”]和\或HTMLEncode在页面输出处使用QueryString [“tx”]的任何用法。