Jadual Kandungan
php过滤特殊危险字符的总结
Rumah php教程 php手册 php过滤特殊危险字符的总结

php过滤特殊危险字符的总结

Jun 13, 2016 am 09:24 AM
watak

php过滤特殊危险字符的总结

一般,对于传进来的字符,php教程可以用addslashes函数处理一遍(要get_magic_quotes_gpc()为假才处理,不然就重复转义了!),这样就能达到一定程度的安全要求
比如这样


代码如下 复制代码
if (!get_magic_quotes_gpc()) {
add_slashes($_GET);
add_slashes($_POST);
add_slashes($_COOKIE);
}

function add_slashes($string) {
if (is_array($string)) {
foreach ($string as $key => $value) {
$string[$key] = add_slashes($value);
}
} else {
$string = addslashes($string);
}
return $string;
}



但是还可以更进一步进行重新编码,解码,如下:


代码如下 复制代码
//编码


function htmlencode($str) {
if(empty($str)) return;
if($str=="") return $str;
$str=trim($str);
$str=str_replace("&","&",$str);
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace(chr(32)," ",$str);
$str=str_replace(chr(9)," ",$str);
$str=str_replace(chr(34),"&",$str);
$str=str_replace(chr(39),"'",$str);
$str=str_replace(chr(13),"
",$str);
$str=str_replace("'","''",$str);
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace("modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cast","cas",$str);
return $str;
}



这样就能更放心的对外来数据进行入库处理了, 但是从数据库取出来,在前台显示的时候,必须重新解码一下:


代码如下 复制代码
//解码


function htmldecode($str) {
if(empty($str)) return;
if($str=="") return $str;
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace((www.111cn.net)"modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas","cast",$str);
$str=str_replace("&","&",$str);
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace(" ",chr(32),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace("&",chr(34),$str);
$str=str_replace("'",chr(39),$str);
$str=str_replace("
",chr(13),$str);
$str=str_replace("''","'",$str);
return $str;
}



虽然多了一步编码,解码的过程,但是安全方面,会更进一步,要如何做,自己取舍吧。


再附一些


代码如下 复制代码
function safe_replace($string) {
$string = str_replace(' ','',$string);
$string = str_replace(''','',$string);
$string = str_replace(''','',$string);
$string = str_replace('*','',$string);
$string = str_replace('"','"',$string);
$string = str_replace("'",'',$string);
$string = str_replace('"','',$string);
$string = str_replace(';','',$string);
$string = str_replace(' $string = str_replace('>','>',$string);
$string = str_replace("{",'',$string);
$string = str_replace('}','',$string);
return $string;
}



更全面的


代码如下 复制代码
//处理提交的数据
function htmldecode($str) {
if (empty ( $str ) || "" == $str) {
return "";
}

$str = strip_tags ( $str );
$str = htmlspecialchars ( $str );
$str = nl2br ( $str );
$str = str_replace ( "?", "", $str );
$str = str_replace ( "*", "", $str );
$str = str_replace ( "!", "", $str );
$str = str_replace ( "~", "", $str );
$str = str_replace ( "$", "", $str );
$str = str_replace ( "%", "", $str );
$str = str_replace ( "^", "", $str );
$str = str_replace ( "^", "", $str );
$str = str_replace ( "select", "", $str );
$str = str_replace ( "join", "", $str );
$str = str_replace ( "union", "", $str );
$str = str_replace ( "where", "", $str );
$str = str_replace ( "insert", "", $str );
$str = str_replace ( "delete", "", $str );
$str = str_replace ( "update", "", $str );
$str = str_replace ( "like", "", $str );
$str = str_replace ( "drop", "", $str );
$str = str_replace ( "create", "", $str );
$str = str_replace ( "modify", "", $str );
$str = str_replace ( "rename", "", $str );
$str = str_replace ( "alter", "", $str );
$str = str_replace ( "cast", "", $str );

$farr = array ("//s+/", //过滤多余的空白
"/]*?)>/isU", //过滤 <script> "/(<[^>]*)on[a-zA-Z]&#43;/s*=([^>]*>)/isU" )//过滤javascript的on事件 <br> ; <br> $tarr = array (" ", "", //如果要直接清除不安全的标签,这里可以留空 <br> "" ); <br> return $str; <br> }<br> <br> from:http://www.111cn.net/phper/phpanqn/55876.htm </script>
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)

Gunakan fungsi Character.isDigit() java untuk menentukan sama ada aksara ialah nombor Gunakan fungsi Character.isDigit() java untuk menentukan sama ada aksara ialah nombor Jul 27, 2023 am 09:32 AM

Gunakan fungsi Java's Character.isDigit() untuk menentukan sama ada aksara ialah aksara angka diwakili dalam bentuk kod ASCII secara dalaman dalam komputer Setiap aksara mempunyai kod ASCII yang sepadan. Antaranya, nilai kod ASCII yang sepadan dengan aksara angka 0 hingga 9 masing-masing adalah 48 hingga 57. Untuk menentukan sama ada aksara ialah nombor, anda boleh menggunakan kaedah isDigit() yang disediakan oleh kelas Aksara dalam Java. Kaedah isDigit() adalah daripada kelas Aksara

Cara menaip anak panah dalam Word Cara menaip anak panah dalam Word Apr 16, 2023 pm 11:37 PM

Cara menggunakan AutoCorrect untuk menaip anak panah dalam Word Salah satu cara terpantas untuk menaip anak panah dalam Word ialah menggunakan pintasan AutoCorrect yang dipratentukan. Jika anda menaip jujukan aksara tertentu, Word secara automatik menukar aksara tersebut kepada simbol anak panah. Anda boleh melukis banyak gaya anak panah yang berbeza menggunakan kaedah ini. Untuk menaip anak panah dalam Word menggunakan AutoCorrect: Gerakkan kursor anda ke lokasi dalam dokumen yang anda mahu anak panah itu muncul. Taipkan salah satu daripada gabungan aksara berikut: Jika anda tidak mahu apa yang anda taip diperbetulkan kepada simbol anak panah, tekan kekunci ruang belakang pada papan kekunci anda untuk

Bagaimanakah anda memasukkan aksara lanjutan, seperti simbol darjah, pada iPhone dan Mac? Bagaimanakah anda memasukkan aksara lanjutan, seperti simbol darjah, pada iPhone dan Mac? Apr 22, 2023 pm 02:01 PM

Papan kekunci fizikal atau angka anda menyediakan bilangan pilihan aksara yang terhad di permukaan. Walau bagaimanapun, terdapat beberapa cara untuk mengakses huruf beraksen, aksara khas dan banyak lagi pada iPhone, iPad dan Mac. Papan kekunci iOS standard memberi anda akses pantas kepada huruf besar dan huruf kecil, nombor standard, tanda baca dan aksara. Sudah tentu, terdapat banyak watak lain. Anda boleh memilih daripada huruf dengan diakritik kepada tanda soal terbalik. Anda mungkin terjumpa watak istimewa yang tersembunyi. Jika tidak, berikut ialah cara untuk mengaksesnya pada iPhone, iPad dan Mac. Cara Mengakses Aksara Lanjutan pada iPhone dan iPad Mendapatkan aksara lanjutan pada iPhone atau iPad anda adalah sangat mudah. Dalam "Maklumat", "

Cara yang betul untuk memaparkan aksara Cina dalam matplotlib Cara yang betul untuk memaparkan aksara Cina dalam matplotlib Jan 13, 2024 am 11:03 AM

Memaparkan aksara Cina dengan betul dalam matplotlib adalah masalah yang sering dihadapi oleh ramai pengguna Cina. Secara lalai, matplotlib menggunakan fon Inggeris dan tidak boleh memaparkan aksara Cina dengan betul. Untuk menyelesaikan masalah ini, kita perlu menetapkan fon Cina yang betul dan menggunakannya pada matplotlib. Di bawah ialah beberapa contoh kod khusus untuk membantu anda memaparkan aksara Cina dengan betul dalam matplotlib. Pertama, kita perlu mengimport perpustakaan yang diperlukan: importmatplot

Cara menggunakan pilihan pemformatan superskrip dan subskrip dalam Microsoft Excel Cara menggunakan pilihan pemformatan superskrip dan subskrip dalam Microsoft Excel Apr 14, 2023 pm 12:07 PM

Superskrip ialah aksara atau aksara, sama ada huruf atau nombor, yang anda perlu tetapkan sedikit di atas baris teks biasa. Sebagai contoh, jika anda perlu menulis 1, huruf st perlu lebih tinggi sedikit daripada aksara 1. Begitu juga, subskrip ialah sekumpulan aksara atau aksara tunggal dan perlu ditetapkan lebih rendah sedikit daripada tahap teks biasa. Sebagai contoh, apabila anda menulis formula kimia, anda perlu meletakkan nombor di bawah garis biasa aksara. Tangkapan skrin berikut menunjukkan beberapa contoh pemformatan superskrip dan subskrip. Walaupun ia mungkin kelihatan seperti tugas yang sukar, menggunakan pemformatan superskrip dan subskrip pada teks anda sebenarnya agak mudah. Dalam artikel ini, kami akan menerangkan dalam beberapa langkah mudah cara memformat teks dengan mudah menggunakan superskrip atau subskrip. Harap anda seronok membaca artikel ini. Cara menggunakan superskrip dalam Excel

Cara menggunakan Golang untuk menentukan sama ada aksara adalah huruf Cara menggunakan Golang untuk menentukan sama ada aksara adalah huruf Dec 23, 2023 am 11:57 AM

Cara menggunakan Golang untuk menentukan sama ada aksara ialah huruf Dalam Golang, menentukan sama ada aksara ialah huruf boleh dicapai dengan menggunakan fungsi IsLetter dalam pakej Unicode. Fungsi IsLetter menyemak sama ada aksara yang diberikan ialah huruf. Seterusnya, kami akan memperkenalkan secara terperinci cara menggunakan Golang untuk menulis kod untuk menentukan sama ada sesuatu aksara itu adalah huruf. Pertama, anda perlu mencipta fail Go baharu untuk menulis kod tersebut. Anda boleh menamakan fail "main.go". kod

Mengenai perwakilan aksara kekunci Enter dalam Java, yang manakah ia? Mengenai perwakilan aksara kekunci Enter dalam Java, yang manakah ia? Mar 29, 2024 am 11:48 AM

Perwakilan aksara kekunci Enter dalam Java ialah `. Dalam Java, ` mewakili aksara baris baharu, dan apabila aksara ini ditemui, output teks akan dibalut. Berikut ialah contoh kod ringkas yang menunjukkan cara menggunakan `` untuk mewakili kekunci Enter: publicclassMain{publicstaticvoidmain(String[]args){System.out.println("Ini ialah baris pertama ini

Cara menaip aksara khas pada Windows 11 Cara menaip aksara khas pada Windows 11 Apr 17, 2023 pm 08:28 PM

Dayakan papan kekunci sentuh dalam mod tablet Jika anda mempunyai komputer riba skrin sentuh, anda boleh menggunakan papan kekunci sentuh untuk menaip berbilang aksara khas pada Windows 11. Ini mungkin cara paling mudah untuk menambah aksara khas. Dayakan aksara khas untuk skrin sentuh pada Windows 11: Buka menu Mula dan pilih Tetapan. Apabila Tetapan dibuka, navigasi ke Masa & Bahasa > Menaip > Sentuh Papan Kekunci. Dalam menu Menaip, tandai pilihan "Tunjukkan papan kekunci sentuh apabila tiada papan kekunci tersedia". Dayakan papan kekunci sentuh tanpa mod tablet Satu lagi cara untuk mengakses papan kekunci sentuh ialah dengan memaparkannya pada bar tugas sepenuh masa. Untuk menjadikan papan kekunci sentuh boleh diakses, anda perlu memberitahu Windows 11 untuk memaparkannya. Gunakan langkah berikut: Dari menu Mula, pilih

See all articles