如何防止脚本注入在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()+"'");

如何防止脚本注入在ckeditor为asp.net 2.0

一种可能的解决方案是对输入到数据库中的值进行编码。当然,这取决于如何再次输出存储的值。

另一种选择是列出一个可能被认为是危险的字符的黑名单,然后直接拒绝所有输入。

。. 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