c#如何防止sql注入?

May 10, 2019 pm 05:24 PM
c# Cegah suntikan sql

对于网站的安全性,是每个网站开发者和运营者最关心的问题。网站一旦出现漏洞,那势必将造成很大的损失。为了提高网站的安全性,首先网站要防注入。

c#如何防止sql注入?

下面我们给大家介绍C#防止sql注入的几种方法:

方法一:

在Web.config文件下面增加一个如下标签:

< appSettings>
  < add key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode-USzip" />
< /appSettings>
Salin selepas log masuk

其中key是 < saveParameters>后面的值为”OrderId-int32”等,其中”-“前面表示参数的名称比如:OrderId,后面的int32表示数据类型。

方法二:

在Global.asax中增加下面一段:

protected void Application_BeginRequest(Object sender, EventArgs e){
  String[] safeParameters = System.Configuration.ConfigurationSettings.AppSettings["safeParameters"].ToString()。Split(&#39;,&#39;);
  for(int i= 0 ;i < safeParameters.Length; i++){
  String parameterName = safeParameters[i].Split(&#39;-&#39;)[0];
  String parameterType = safeParameters[i].Split(&#39;-&#39;)[1];
  isValidParameter(parameterName, parameterType);
  }
  }
  public void isValidParameter(string parameterName, string parameterType){
  string parameterValue = Request.QueryString[parameterName];
  if(parameterValue == null) return;
  if(parameterType.Equals("int32")){
  if(!parameterCheck.isInt(parameterValue)) Response.Redirect("parameterError.aspx");
  }
  else if (parameterType.Equals("USzip")){
  if(!parameterCheck.isUSZip(parameterValue)) Response.Redirect("parameterError.aspx");
  }
  else if (parameterType.Equals("email")){
  if(!parameterCheck.isEmail(parameterValue)) Response.Redirect("parameterError.aspx");
  }
  }
Salin selepas log masuk

方法三:

使用字符串过滤类

 /**//// < summary>
  /// 处理用户提交的请求
  /// < /summary>
  public static void StartProcessRequest()
  {
  // System.Web.HttpContext.Current.Response.Write("< script>alert(&#39;dddd&#39;);< /script>");
  try
  {
  string getkeys = "";  //string sqlErrorPage = System.Configuration.ConfigurationSettings.AppSettings["CustomErrorPage"].ToString();
  if (System.Web.HttpContext.Current.Request.QueryString != null)
  {
  for(int i=0;i< System.Web.HttpContext.Current.Request.QueryString.Count;i++)  {
  getkeys = System.Web.HttpContext.Current.Request.QueryString.Keys[i];  if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.QueryString[getkeys],0))
  {
  //System.Web.HttpContext.Current.Response.Redirect (sqlErrorPage+"?errmsg=sqlserver&sqlprocess=true");
  System.Web.HttpContext.Current.Response.Write("< script>alert(&#39;请勿非法提交!&#39;);history.back();< /script>");
  System.Web.HttpContext.Current.Response.End();
  }
  }
  }
  if (System.Web.HttpContext.Current.Request.Form != null)
  {
  for(int i=0;i< System.Web.HttpContext.Current.Request.Form.Count;i++)  {
  getkeys = System.Web.HttpContext.Current.Request.Form.Keys[i];  if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys],1))
  {
  //System.Web.HttpContext.Current.Response.Redirect (sqlErrorPage+"?errmsg=sqlserver&sqlprocess=true");
  System.Web.HttpContext.Current.Response.Write("< script>alert(&#39;请勿非法提交!&#39;);history.back();< /script>");
  System.Web.HttpContext.Current.Response.End();
  }
  }
  }
  }
  catch
  {
  // 错误处理: 处理用户提交信息!
  }
  }
  /**//// < summary>
  /// 分析用户请求是否正常
  /// < /summary>
  /// < param name="Str">传入用户提交数据< /param>
  /// < returns>返回是否含有SQL注入式攻击代码< /returns>
  private static bool ProcessSqlStr(string Str,int type)
  {
  string SqlStr;  if(type == 1)
  SqlStr = "exec |insert |select |delete |update |count |chr |mid |master |truncate |char |declare ";  else
  SqlStr = "&#39;|and|exec|insert|select|delete|update|count|*|chr|mid|master|truncate|char|declare";  bool ReturnValue = true;  try
  {
  if (Str != "")
  {
  string[] anySqlStr = SqlStr.Split(&#39;|&#39;);
  foreach (string ss in anySqlStr)
  {
  if (Str.IndexOf(ss)>=0)
  {
  ReturnValue = false;  }
  }
  }
  }
  catch
  {
  ReturnValue = false;  }
  return ReturnValue;  }
  #endregion  }
  }
Salin selepas log masuk

相关视频教程推荐:《C#教程

Atas ialah kandungan terperinci c#如何防止sql注入?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Direktori Aktif dengan C# Direktori Aktif dengan C# Sep 03, 2024 pm 03:33 PM

Panduan untuk Active Directory dengan C#. Di sini kita membincangkan pengenalan dan cara Active Directory berfungsi dalam C# bersama-sama dengan sintaks dan contoh.

C# Serialisasi C# Serialisasi Sep 03, 2024 pm 03:30 PM

Panduan untuk Pensirian C#. Di sini kita membincangkan pengenalan, langkah-langkah objek siri C#, kerja, dan contoh masing-masing.

Penjana Nombor Rawak dalam C# Penjana Nombor Rawak dalam C# Sep 03, 2024 pm 03:34 PM

Panduan untuk Penjana Nombor Rawak dalam C#. Di sini kita membincangkan cara Penjana Nombor Rawak berfungsi, konsep nombor pseudo-rawak dan selamat.

Paparan Grid Data C# Paparan Grid Data C# Sep 03, 2024 pm 03:32 PM

Panduan untuk Paparan Grid Data C#. Di sini kita membincangkan contoh cara paparan grid data boleh dimuatkan dan dieksport daripada pangkalan data SQL atau fail excel.

Corak dalam C# Corak dalam C# Sep 03, 2024 pm 03:33 PM

Panduan kepada Corak dalam C#. Di sini kita membincangkan pengenalan dan 3 jenis Corak teratas dalam C# bersama-sama dengan contoh dan pelaksanaan kodnya.

Faktorial dalam C# Faktorial dalam C# Sep 03, 2024 pm 03:34 PM

Panduan untuk Faktorial dalam C#. Di sini kita membincangkan pengenalan kepada faktorial dalam c# bersama-sama dengan contoh dan pelaksanaan kod yang berbeza.

Nombor Perdana dalam C# Nombor Perdana dalam C# Sep 03, 2024 pm 03:35 PM

Panduan Nombor Perdana dalam C#. Di sini kita membincangkan pengenalan dan contoh nombor perdana dalam c# bersama dengan pelaksanaan kod.

Perbezaan antara multithreading dan asynchronous C# Perbezaan antara multithreading dan asynchronous C# Apr 03, 2025 pm 02:57 PM

Perbezaan antara multithreading dan asynchronous adalah bahawa multithreading melaksanakan pelbagai benang pada masa yang sama, sementara secara tidak sengaja melakukan operasi tanpa menyekat benang semasa. Multithreading digunakan untuk tugas-tugas yang berintensifkan, sementara asynchronously digunakan untuk interaksi pengguna. Kelebihan multi-threading adalah untuk meningkatkan prestasi pengkomputeran, sementara kelebihan asynchronous adalah untuk tidak menghalang benang UI. Memilih multithreading atau asynchronous bergantung kepada sifat tugas: tugas-tugas intensif pengiraan menggunakan multithreading, tugas yang berinteraksi dengan sumber luaran dan perlu menyimpan respons UI menggunakan asynchronous.

See all articles