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

考えられる解決策の 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 アンチ XSS ライブラリに関する情報: http://msdn.microsoft.com/en-us/library/aa973813.aspx

于 2012-12-30T15:46:11.837 に答える