使用.net 4,有一个新的<%:%>脚本外壳,类似于<%=%>,但是进行了html编码.人们鼓励使用这种新语法.
我的问题是,<%:%>是否更好地防范XSS或使用Microsoft Anti XSS库?
一位微软安全人员曾告诉我,不要只使用HTML Encode,因为它不能很好地保护,而且我应该总是使用Anti XSS库(或其他库).<%:%>是否仍然如此?或者我可以自信地使用<%:%>知道它会像人们所说的那样保护我的应用程序免受XSS攻击吗?
我知道关于HTML消毒剂的很多问题已经出现在SO中,但是我不知道他们是否做了我想做的事情,因为一些推荐的方法已经超过4年了,所以我有点乱.
我有一个TinyMCE编辑器的页面.当然,这个编辑器将HTML发送到服务器,并期望HTML,所以我创建了一个带有String属性的[AllowHtml]属性实体.它运作良好.
现在,我想确保没有人尝试发送<script>标签,或者<img onerror="">执行JS的任何方式,或者添加指向外部URL的CSS.
目前最好的解决方案是什么?
WPL有HtmlSanitizationLibrary,但我怎么知道哪些标签被认为是"安全的"?
WPL从去年四月开始没有发布任何内容,而且是测试版.所以我想知道这个项目是否有效?
干杯.
我正在使用Microsoft反xss库,我注意到由于某种原因它正在删除<ul>标记.我无法弄清楚为什么.例如:
string html = @"<ul><li>this is a test </li></ul>";
string sanitized = Sanitizer.GetSafeHtmlFragment(html);
Run Code Online (Sandbox Code Playgroud)
这是回归:
\r\n<li>this is a test </li>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在尝试确保我的webforms ASP.NET应用程序尽可能安全,它只接收具有登录功能的用户接收并将用户输入数据存储到SQL数据库(通常的东西),因此一般公众无法使用.
通过禁用ValidateRequest输入页面,我感谢存在XSS攻击的风险 - 所有SQL查询都是参数化的,因此从SQL注入是安全的(正确吗?).
我可以只使用HTMLencode输入文本而不是使用Anti-XSS库吗?然后我存储HTMLencoded字符串吗?
或者我是以错误的方式看待它?我应该逐字存储用户输入,然后HTMLencode还是XSS-HTMLencode随时输出到浏览器?
为了防止XSS攻击,我正在更新一个页面,在该页面中我们有一个接受HTML的文本框,将其存储在数据库中并在以后检索和呈现它.
我的理解是我可以使用AntiXSS.GetSafeHtmlFragment()方法清理HTML .只要我在将HTML存储到数据库之前执行此操作,我是否可以使用?当HTML在网页上输出时,我是否需要做任何事情?
此外,似乎白名单是一种黑盒子.有没有办法根据我们的要求更新这个?
我已经阅读了很多关于XSS以及如何处理的帖子.通常,共识是黑名单上的白名单,并避免使用正则表达式(太多的变体来处理).
我正在研究ASP.Net MVC3应用程序.我需要能够从用户条目中显示HTML(例如<strong>,<ul>,<li>等...)但我不想要任何XSS风险.
我正在通过Nuget使用AntiXSS软件包.在我的模型中,我有
[AllowHtml]
public string UserDetails{ get; set; }
Run Code Online (Sandbox Code Playgroud)
在我看来,我有TinyMCE迷上了textarea.
在我的控制器中,我从View获取帖子并清理它:
using Microsoft.Security.Application;
...
string SanitizedDetails = Sanitizer.GetSafeHtmlFragment(model.UserDetails);
Run Code Online (Sandbox Code Playgroud)
我的问题:我做得对吗?我是否受到大多数XSS问题的保护,还是我咆哮着错误的树?
MS的AntiXSS(v4.2.1)Sanitizer.GetSafeHtmlFragment(string)方法正在从我的输入中删除<br>和<br />标记.这应该发生吗?有办法解决吗?
它似乎也是删除\n和\r字符,所以我不能Replace()在清洁剂完成其工作后打电话.
我有一个简单的论坛应用程序,当有人发布任何内容时,我这样做:
post.Content = Sanitizer.GetSafeHtml(post.Content);
Run Code Online (Sandbox Code Playgroud)
现在,我不确定我做错了什么,或者发生了什么,但它几乎不允许任何HTML.即使是简单<b></b>也是太过分了.所以我想这个工具完全没用.
现在我的问题是:有谁能告诉我应该如何消毒我的用户输入,以便他们可以发布一些图像(<img>标签)并使用大胆的重点等?
现在MVC已经引入了HTML Encoding via
<%: blah %>
Run Code Online (Sandbox Code Playgroud)
使用还有价值吗?
<%= AntiXSS.HTMLEncode(blah) %>
Run Code Online (Sandbox Code Playgroud)
代替?
例如:我的应用程序将获取所有内容(包括JavaScript)并将其存储在数据库中的原始状态.我打算简单地使用类似的东西输出所有东西,<%: model.Name %>并依靠MVC"东西"为我做编码.
该方法是否足够安全,可以依赖AntiXSS,还是需要明确使用AntiXSS库?如果我需要使用AntiXSS库,我可以问为什么不会将这种东西内置到MVC中?
我想在我的Web应用程序中使用AntiXss库函数.我有一个Web应用程序,其中包含带有Jquery代码的asp.net页面.整个asp.net页面通过Jquery js页面运行.我想将编码函数应用于某些字段,但问题是如何应用以及在何处应用编码unction - (在jquery页面中将值设置为在输出窗口0r上显示在服务器端代码中,其中get data API被调用在cs文件中.)以及在这种情况下使用的函数(HtmlEncode,JavascriptEncode等)
提前致谢
antixsslibrary ×10
asp.net ×6
xss ×5
.net ×3
c# ×3
security ×2
asp.net-mvc ×1
jquery ×1
tinymce ×1
wpl ×1