<?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('您提交的參數(shù)非法,系統(tǒng)已記錄您的本次操作!','',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
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

20 May 2025
Mengelakkan suntikan SQL dalam PHP boleh dilakukan dengan: 1. Gunakan pertanyaan parameter (preparedStatements), seperti yang ditunjukkan dalam contoh PDO. 2. Gunakan perpustakaan ORM, seperti doktrin atau fasih, untuk mengendalikan suntikan SQL secara automatik. 3. Sahkan dan penapis input pengguna untuk mengelakkan jenis serangan lain.

18 Mar 2025
Artikel ini membincangkan menggunakan pertanyaan parameter dalam SQL untuk mencegah serangan suntikan SQL dengan menyediakan kenyataan dengan ruang letak dan parameter mengikat dengan selamat. Ia meliputi pelaksanaan merentasi pangkalan data yang berbeza dan menekankan menggabungkan parameteri

21 Jun 2025
Topreventsqlinjection, useparameterizedqueries.tesekeepuserinputseparatefromthesqlcommandstructure, memastikanthatmalicienceInputcannotalterquerylogic.sqlinjecticurswhenattackersmanipulateInpuleShangequerlehavior, sedemikian

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

28 Jun 2025
Menggunakan PreparedStatementsThemostefectwayTopreventsqlinjectionAttacks.1.TheyworkbyseparatingsqllogicFromData, MemastikanUserInputisalWaysTreatedasdata, NotExecutableCode.2.ThismeDususes -Placeholder (seperti

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


Alat panas

Pustaka PHP untuk bekas suntikan kebergantungan
Pustaka PHP untuk bekas suntikan kebergantungan

Koleksi 50 algoritma PHP klasik yang sangat baik
Algoritma PHP klasik, pelajari idea yang sangat baik dan kembangkan pemikiran anda

Pustaka PHP kecil untuk mengoptimumkan imej
Pustaka PHP kecil untuk mengoptimumkan imej
