111*_*110 2 xss asp.net-mvc tinymce antixsslibrary asp.net-mvc-3
我不知道我是否正确行事.
我第一次构建一些东西来防止页面上的攻击.
我将从底部开始:
我有财产:
public string Description {get;set;}
Run Code Online (Sandbox Code Playgroud)
用户可以通过tinyMCE设置它的值
tinyMCE.init({
mode: "textareas",
theme: "advanced",
encoding : "xml"...
Run Code Online (Sandbox Code Playgroud)
在控制器之前我将其保存在数据库中我做:
model.Description = HttpUtility.HtmlDecode(model.Description);
Run Code Online (Sandbox Code Playgroud)
在数据库中我有一个像这样的值:
<p>bla bla bla</p>
Run Code Online (Sandbox Code Playgroud)
我在我的项目中添加了AntiXSS库:
public class AntiXssEncoder : HttpEncoder
{
public AntiXssEncoder() { }
protected override void HtmlEncode(string value, TextWriter output)
{
output.Write(Encoder.HtmlEncode(value)); // on breakpoint code always get in here
}
...
Run Code Online (Sandbox Code Playgroud)
当我从数据库显示数据时,我使用:
@Html.Raw(Model.Place.Description)
Run Code Online (Sandbox Code Playgroud)
它工作正常我只看到文字.没有Html标签.Breaklines工作正常.我可以用粗体,斜体等来设置文本样式.
但如果我进入:
<script>alert(open to attack);</script>
Run Code Online (Sandbox Code Playgroud)
我有警报窗口.
我不明白我需要做些什么才能防止这种情况发生?
我在我的项目中添加了AntiXSS库
你在哪里使用它?
确保您不仅添加了AntiXSS,而且实际使用了它:
@Html.Raw(Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment(Model.Place.Description))
Run Code Online (Sandbox Code Playgroud)
但请记住,AntiXSS库的新版本是有点过于严格,将剥离标签,如<strong>和<br>哪些可能是不希望的.
作为AntiXSS库的替代方案,您可以使用HTML Agility Pack来完成这项工作.里克斯特尔blogged about a sample implementation.
| 归档时间: |
|
| 查看次数: |
1795 次 |
| 最近记录: |