0

我在我的页面中使用 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()+"'");
4

1 回答 1

1

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

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

.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

于 2012-12-30T15:46:11.837 回答