cari
RumahPerpustakaan PHPPerpustakaan lainPustaka kelas PHP untuk mengelakkan suntikan SQL
Pustaka kelas PHP untuk mengelakkan suntikan SQL
<?php
class sqlsafe {
  private $getfilter = "'|(and|or)\b.+?(>|<|=|in|like)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
  private $postfilter = "\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
  private $cookiefilter = "\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
  public function __construct() {
    foreach($_GET as $key=>$value){$this->stopattack($key,$value,$this->getfilter);}
    foreach($_POST as $key=>$value){$this->stopattack($key,$value,$this->postfilter);}
    foreach($_COOKIE as $key=>$value){$this->stopattack($key,$value,$this->cookiefilter);}
  }
  public function stopattack($StrFiltKey, $StrFiltValue, $ArrFiltReq){
    if(is_array($StrFiltValue))$StrFiltValue = implode($StrFiltValue);
    if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue) == 1){
      $this->writeslog($_SERVER["REMOTE_ADDR"]."    ".strftime("%Y-%m-%d %H:%M:%S")."    ".$_SERVER["PHP_SELF"]."    ".$_SERVER["REQUEST_METHOD"]."    ".$StrFiltKey."    ".$StrFiltValue);
      showmsg('您提交的参数非法,系统已记录您的本次操作!','',0,1);
    }
  }
  public function writeslog($log){
    $log_path = CACHE_PATH.'logs'.DIRECTORY_SEPARATOR.'sql_log.txt';
    $ts = fopen($log_path,"a+");
    fputs($ts,$log."\r\n");
    fclose($ts);
  }
}

Pustaka kelas ini mula-mula membina parameter fungsi, kemudian menyemak dan menulis log, dan akhirnya menyemak log suntikan SQL. Ia adalah perpustakaan kelas PHP yang sangat berguna untuk menghalang suntikan SQL


Penafian

Semua sumber di laman web ini disumbangkan oleh netizen atau dicetak semula oleh tapak muat turun utama. Sila semak integriti perisian itu sendiri! Semua sumber di laman web ini adalah untuk rujukan pembelajaran sahaja. Tolong jangan gunakannya untuk tujuan komersial. Jika tidak, anda akan bertanggungjawab untuk semua akibat! Jika terdapat sebarang pelanggaran, sila hubungi kami untuk memadamkannya. Maklumat hubungan: admin@php.cn

Artikel Berkaitan

Bagaimana untuk Mengelakkan Suntikan SQL Apabila Menggunakan `bindValue` dalam Klausa LIMIT?Bagaimana untuk Mengelakkan Suntikan SQL Apabila Menggunakan `bindValue` dalam Klausa LIMIT?

18Dec2024

Cara Mencegah Suntikan SQL Apabila Menggunakan BindValue dalam Klausa LIMITApabila cuba untuk melaksanakan pertanyaan SQL menggunakan kaedah bindValue untuk parametrize...

Bagaimanakah Java Boleh Meningkatkan Pembinaan String SQL untuk Mengelakkan Ralat dan Suntikan SQL?Bagaimanakah Java Boleh Meningkatkan Pembinaan String SQL untuk Mengelakkan Ralat dan Suntikan SQL?

04Jan2025

Pembinaan String SQL dalam JavaMembina rentetan SQL untuk manipulasi pangkalan data boleh menjadi tugas yang membosankan dan mudah ralat apabila dilakukan melalui rentetan...

Bagaimana untuk Menggunakan Kad Liar SQL dengan Selamat dengan `MySQLdb` Python untuk Mengelakkan Suntikan?Bagaimana untuk Menggunakan Kad Liar SQL dengan Selamat dengan `MySQLdb` Python untuk Mengelakkan Suntikan?

21Dec2024

Menggunakan Kad Liar SQL dan Operator LIKE dalam Format Rentetan PythonMemasukkan kad bebas SQL dan operator LIKE ke dalam format rentetan Python boleh...

Bagaimanakah Saya Boleh Menggunakan Sambungan MySQL dalam PHP dengan Selamat untuk Mengelakkan Suntikan SQL dan Perangkap Lain?Bagaimanakah Saya Boleh Menggunakan Sambungan MySQL dalam PHP dengan Selamat untuk Mengelakkan Suntikan SQL dan Perangkap Lain?

12Dec2024

Pertanyaan MySQL Selamat dengan Sambungan MySQLPengenalanWalaupun kelaziman PDO, keluarga fungsi mysql_* kekal sebagai pilihan biasa untuk...

Bagaimanakah Saya Boleh Menyalurkan Nama Jadual dengan Selamat kepada Prosedur Tersimpan untuk Mengelakkan Suntikan SQL?Bagaimanakah Saya Boleh Menyalurkan Nama Jadual dengan Selamat kepada Prosedur Tersimpan untuk Mengelakkan Suntikan SQL?

15Jan2025

Menghantar Nama Jadual ke Prosedur TersimpanDalam pengaturcaraan pangkalan data, selalunya perlu menulis pertanyaan yang merujuk jadual tertentu berdasarkan...

Bagaimana untuk Mengoptimumkan Penyata Disediakan PHP untuk Pengelakan Suntikan SQL?Bagaimana untuk Mengoptimumkan Penyata Disediakan PHP untuk Pengelakan Suntikan SQL?

21Oct2024

Artikel ini membentangkan amalan terbaik untuk mengoptimumkan kenyataan yang disediakan PHP untuk menghalang suntikan SQL. Ia menekankan langkah penting untuk menyemak ralat, mengikat parameter dengan betul, mengelakkan pelarian manual dan menetapkan parameter selepas mengikat. Iklan

See all articles