Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 18374|Ответ: 0

[ASP.NET] Пакетное обнаружение пользовательского ввода для опасных символов SQL

[Скопировать ссылку]
Опубликовано 08.05.2015 12:29:34 | | |
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="testsql.aspx.cs" Inherits="TestWeb.testsql" %>

  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5.     <title></title>
  6. </head>
  7. <body>
  8.     <form id="form1" runat="server">
  9.     <div>
  10.         <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:TextBox ID="TextBox2"
  11.             runat="server"></asp:TextBox><asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
  12.             <asp:Button ID="Button1" runat="server" Text="Button"
  13.             onclick="Button1_Click" />
  14.     </div>
  15.    
  16.     </form>
  17. </body>
  18. </html>
Копирование кода

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;

  7. namespace TestWeb
  8. {
  9.     public partial class testsql : System.Web.UI.Page
  10.     {
  11.         protected void Page_Load(object sender, EventArgs e)
  12.         {

  13.         }

  14.         protected void Button1_Click(object sender, EventArgs e)
  15.         {
  16.             string[] userinput = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
  17.             bool a=SQLinfo.sql(userinput);
  18.             Response.Write(a);
  19.         }
  20.     }
  21. }
Копирование кода

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Text.RegularExpressions;

  6. namespace TestWeb
  7. {
  8.     public class SQLinfo
  9.     {
  10.         public static bool sql(string[] inputString)
  11.         {
  12.             string SqlStr = @"and|or|exec|execute|insert|select|delete|update|alter|create|drop|count|\*|chr|char|asc|mid|substring|master|truncate|declare|xp_cmdshell|restore|backup|net +user|net +localgroup +administrators";
  13.             try
  14.             {
  15.                 foreach (string sqls in inputString)
  16.                 {
  17.                     if ((sqls != null) && (sqls != String.Empty))
  18.                     {
  19.                         string str_Regex = @"\b(" + SqlStr + @")\b";

  20.                         Regex Regex = new Regex(str_Regex, RegexOptions.IgnoreCase);
  21.                         //string s = Regex.Match(inputString).Value;
  22.                         if (true == Regex.IsMatch(sqls))
  23.                             return false;

  24.                     }
  25.                 }
  26.             }
  27.             catch
  28.             {
  29.                 return false;
  30.             }
  31.             return true;
  32.         }
  33.     }
  34. }
Копирование кода






Предыдущий:Трёхуровневая архитектура ASP.NET (DAL, BLL, UI)
Следующий:Если у вас уже есть открытый DataReader, связанный с этой командой, сначала его нужно закрыть.
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com