Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 18374|Odgovoriti: 0

[ASP.NET] Serijsko zaznavanje uporabniškega vnosa za SQL nevarne znake

[Kopiraj povezavo]
Objavljeno na 8. 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>
Kopiraj kodo

  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. }
Kopiraj kodo

  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. }
Kopiraj kodo






Prejšnji:Trinivojska arhitektura ASP.NET (DAL, BLL, UI)
Naslednji:Če že imate odprt DataReader, povezan s tem ukazom, ga morate najprej zapreti.
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com