<?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
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

18Mar2025
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

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

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

13Mar2025
Artikel ini membincangkan menggunakan pernyataan yang disediakan di MySQL untuk mencegah suntikan SQL dengan memisahkan logik SQL dari data. Ia meliputi pelaksanaan, amalan terbaik, dan batasan, menekankan bahawa walaupun pernyataan yang berkesan dan disediakan sahaja tidak boleh menghilangkan

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

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


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
