如何防止脚本注入在ckeditor为asp.net 2.0
本文关键字:asp net ckeditor 何防止 脚本 注入 | 更新日期: 2023-09-27 17:49:53
我在我的页面中使用ckeditor控件,用于向我的数据库插入数据,这个控件允许恶意用户向我的数据库注入脚本。
我怎样才能防止这种情况的发生?
下面是用于插入数据库的代码。
CKeditor1.text
包含来自编辑器控件的文本。
intro = intro + "....";
myStatic.insertFields("ID,Title, Block,isDep,dat,imgpath,intro", " E_News", "" + maxID + ",'" + txtTitle.Text + "','" + CKEditor1.Text.Trim() + "'," + isDep + ",'" + d + "','" + txtimgpath.Text + "','" +intro.Trim()+"'");
一种可能的解决方案是对输入到数据库中的值进行编码。当然,这取决于如何再次输出存储的值。
另一种选择是列出一个可能被认为是危险的字符的黑名单,然后直接拒绝所有输入。
。. NET有一些内置的功能来拒绝包含潜在危险输入的请求,但是我对你的情况还不够了解。
HttpServerUtility。HtmlEncode适合对脚本进行编码,以便存储在数据库中。但是,如果您在输出时解码它,您将遇到同样的问题!
http://msdn.microsoft.com/en-us/library/w3te6wfz.aspx因此,您应该使用白名单并拒绝任何包含脚本标记的输入(您应该找到一个库来为您完成此操作)
Maysam提到,你还需要使用SQL参数来确保用户不能对你的数据库执行SQL注入攻击,关于如何做到这一点,有很多指南。
编辑:这将做你想做的,但我建议你使用库来做这类事情。
if (str.IndexOf("<script>", StringComparison.InvariantCultureIgnoreCase) > -1)
return true;
关于MS Anti XSS库的信息:http://msdn.microsoft.com/en-us/library/aa973813.aspx