DNN PortalSecurity.csにこのコードが見つかりました。これは、入力文字列のSQLインジェクションを安全にするためのものです。私は、このコードがユーザ入力をきれいにして、パラメータ化されていないクエリ、つまりSQLインジェクションを防ぐことができるかどうかを知りたいですか?ここに何か問題はありますか?このコードはSQLインジェクションを不可能にすることができますか?
private string FormatRemoveSQL(string strSQL)
{
const string BadStatementExpression = ";|--|create|drop|select|insert|delete|update|union|sp_|xp_|exec|/\\*.*\\*/|declare|waitfor|%|&";
return Regex.Replace(strSQL, BadStatementExpression, " ", RegexOptions.IgnoreCase | RegexOptions.Compiled).Replace("'", "''");
}
なぜパラメータ化されていないクエリですか? – adt
なぜ「選択」は「悪い声明」ですか? '%'と同じですか?それはあまりにも多くの "一般的な" redacterされredactingようだ。 –
@mybirthname最初の文を読んでください。 [DotNetNuke/PortalSecurity.cs](https://searchcode.com/codesearch/view/3358680/)からヤンクされた –