使用ajax查询的请求验证?

时间:2011-10-27 12:12:30

标签: c# asp.net xss

我网站上的用户有一个页面可以自己编写html。我想将它用于有序列表,样式等等,但有些人会尝试插入脚本,我不能允许。

更新用户描述的机制是通过ajax。在javascript中,我向文件ajax.ashx发送请求,该文件调用ajaxMethods.cs中的函数。在函数中,我使用用户的新描述更新sql server。

在将描述提交给服务器之前,如何验证函数中的输入?我想要删除与脚本有关的任何内容,但保留正常的html标记,如<p>。是否有任何工具可以处理所有这些?

2 个答案:

答案 0 :(得分:1)

为什么不允许用户使用自定义格式/语言(例如Markdown),然后将此服务器端解析为HTML?这样您就知道在实际请求中找到的任何脚本/ html代码都是无效的,可以被剥离(或编码)。这也为您提供了仅允许预定标签列表的优势。它基本上会为您提供与StackOverflow相同的功能。

答案 1 :(得分:0)

我建议您输出HttpServerUtility.HtmlEncode。试图解析脚本标签而不是HTML不是一个好方法。见下面的参考文献:

XSS (Cross Site Scripting) Cheat Sheet