首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PagesSection.ValidateRequest是否足以阻止asp.Net中的XSS

PagesSection.ValidateRequest是否足以阻止asp.Net中的XSS
EN

Stack Overflow用户
提问于 2012-03-16 15:23:39
回答 2查看 1.6K关注 0票数 5

在asp.net中,PagesSection.ValidateRequest方法是否足以防止所有的XSS攻击,或者还需要做更多的工作?

谁能给我一个更全面的关于这个主题的资源,特别是关于asp.net的,因为谷歌主要返回MSDN文章,我想验证我们做得够多了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-17 17:05:51

AntiXSS库

微软的AntiXSS library是ASP.Net的一个很好的解决方案。它使用白名单(而不是黑名单)的方法,并且似乎由微软定期更新。

最新下载(截至本文):http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=28589

AntiXSS同时支持文本和HTML样式的验证。HTML验证确实允许可能不需要的内容(例如另一个域中的图像)。

它要求您在库中运行每个输入值,这将导致额外的代码(尽管很简单)。

代码语言:javascript
复制
using System;
using Microsoft.Security.Application;

public class AppText
{
    public static string GetSafeHtml( string inputText )
    {
        return Sanitizer.GetSafeHtmlFragment( inputText );
    }

    public static string GetSafeText( string inputText )
    {
        return Microsoft.Security.Application.Encoder.HtmlEncode( inputText );
    }
}

好处

手动验证每个输入可以确保您不会认为安全性只是由ASP.Net请求验证“处理”的。它还为您提供了在需要时禁用请求验证的灵活性(在请求中存在可疑字符的合法情况)。因为您使用AntiXSS库显式地验证输入,所以可以在请求中允许字符/标记。

常规XSS信息

https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

票数 2
EN

Stack Overflow用户

发布于 2012-03-17 16:51:25

这里有一个例子:HttpRequestValidationException and cross-site scripting XSS

请求验证只是尝试停止包含一组非常小的错误字母的请求。这还不足以阻止XSS,因为有几个XSS示例属于该字母集之外。一个这样的例子是跳出现有的html属性并进入新的html属性:

代码语言:javascript
复制
<input type="text" value="BAD_DATA">

如果BAD_DATA为" autofocus onfocus="alert(1),则变为

代码语言:javascript
复制
<input type="text" value="" autofocus onfocus="alert(1)">

这将弹出警告框。

因此,尽管请求验证可以阻止简单的XSS攻击,但它不会阻止所有攻击。我也看到了在登录表单上关闭它的需要,因为它将拒绝密码中包含<的用户。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9733427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档