Автор: Taote.com
Источник: Taote.com
Примечание. Пожалуйста, указывайте источник при перепечатке,
чтобы предотвратить SQL-инъекцию. Обычно изменение файлов один за другим не только затруднительно, но и рискует пропасть. Позвольте мне поговорить о том, как предотвратить внедрение целиком. система.
Я считаю, что, выполнив следующие три шага, программа станет безопаснее, а обслуживание всего веб-сайта станет проще.
1. Категория проверки данных:
параметрCheck.cs
параметрCheck публичного класса {
public static bool isEmail(string emailString){
return System.Text.RegularExpressions.Regex.IsMatch(emailString, "['\w_-]+( \.['\w_-]+)*@['\w_-]+(\.[ '\w_-]+)*\.[a-zA-Z]{2,4 }");
}
public static bool isInt(string intString){
return System.Text.RegularExpressions.Regex.IsMatch(intString ,"^( \d{5}-\d{4})|(\d{5})$ ");
}
public static bool isUSZip(строка zipString){
return System.Text.RegularExpressions.Regex.IsMatch(zipString,"^-[0-9]+$|^[0-9]+$");
}
}
2. Web.config
В файле Web.config добавьте тег в <appSettings>: следующим образом:
<appSettings>
<add key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode-USzip" />
</appSettings>
, где ключ — <saveParameters>, а следующее значение — «OrderId-int32» и т. д., где «-» впереди представляет имя параметра, например: OrderId, а следующее int32 представляет данные тип.
3. Global.asax
Добавьте в Global.asax следующий абзац:
protected void Application_BeginRequest (отправитель объекта, EventArgs e) {
String[] SafeParameters = System.Configuration.ConfigurationSettings.AppSettings["safeParameters"].ToString().Split(',');
for(int i= 0;i <safeParameters.Length; i++){
Строковый параметрName = SafeParameters[i].Split('-')[0];
Строковый параметрType = SafeParameters[i].Split('-')[1];
isValidParameter (Имя параметра, Тип параметра);
}
}
Public void isValidParameter (имя параметра строки, тип параметра строки) {
строка ПараметрЗначение = Request.QueryString[имяпараметра];
if(parameterValue == null) return;
if(parameterType.Equals("int32")){
if(!parameterCheck.isInt(parameterValue)) Response.Redirect("parameterError.aspx");
}
иначе если (parameterType.Equals("double")){
if(!parameterCheck.isDouble(parameterValue)) Response.Redirect("parameterError.aspx");
}
иначе если (parameterType.Equals("USzip")){
if(!parameterCheck.isUSZip(parameterValue)) Response.Redirect("parameterError.aspx");
}
иначе если (parameterType.Equals("электронная почта")){
if(!parameterCheck.isEmail(parameterValue)) Response.Redirect("parameterError.aspx");
}
}
Когда в будущем потребуются изменения, нам нужно будет изменить только три вышеуказанных файла, что значительно повысит эффективность обслуживания всей системы. Конечно, вы можете добавить другие переменные параметры и типы данных в соответствии с вашими потребностями.