我在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
爲什麼'select'是一個「糟糕的陳述」? '%'是一樣的嗎?看起來它太過分了,不能成爲一個「普通」的喧賓奪主。 –
@mybirthname閱讀第一句。它從[DotNetNuke/PortalSecurity.cs](https://searchcode.com/codesearch/view/3358680/) –