Этот код был найден в DNN PortalSecurity.cs. Предполагается, что он будет содержать вводную строку sql injection safe. Я хочу знать, может ли этот код очищать пользовательский ввод, чтобы сделать его безопасным для использования в не параметризованном запросе, то есть может ли он предотвратить 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/) –