php的filter擴充套件小技巧

2021-08-07 23:32:06 字數 960 閱讀 9486

做為乙個合格的web開發人員,一定會牢記乙個原則――永遠不能相信使用者輸入的資料,行走江湖,安全第一是很重要的。使用者通過表單或url傳過來的資料,一定要仔細檢查過了,才往後臺資料庫裡存進去。在乙個成熟的開發團隊裡,貫徹這個原則不成問題;但是如果在乙個新人老手混搭的小team裡,很容易就忽視了這個問題,那麼各種安全漏洞比如跨站攻擊,sql注入等等真是防不勝防。

實際上,用php 5自帶的filter擴充套件能夠較好的解決這個問題。我在從前的blog裡記錄了filter擴充套件的常規用法

――直接利用filter來校驗資料,這樣有不少額外的**量,所以我得介紹乙個比較偷懶的辦法――自動對所有輸入變數進行過濾,這只需要對php.ini增加一行配置,然後重啟apache或fastcgi讓php配置生效。

filter.default="special_chars"

開啟了這項配置後,會自動使用filter_input

方法對$_get, $_post, $_cookie, $_request以及$_server變數進行過濾轉義。配置中special_chars是常量filter_sanitize_special_chars的縮寫,它能自動轉義大部分危險字元例如: '"<>。而php手冊對它的解釋是:

html-escape '"<>& and characters with ascii value less than 32, optionally strip or encode other special characters.

在這個情況下,新人們寫出這樣的**我也不會太擔心:

php:

在部分場合,我們可能還是需要未轉義的變數,比如某個ajax接受的引數是一段json串,用這段**即可獲得原始資料:

php:

fitler擴充套件與yahoo使用的yiv如出一轍,印象裡似乎就是yahoo對yiv做了些修改貢獻給php社群,但是暫時沒找到出處。

PHP擴充套件之Filter詳解

filter,它的作用就和他的名字一樣 過濾。filter內建了多個常用過濾器,根據過濾器功能的不同,可以分成淨化過濾器 sanitization 和驗證過濾器 validation 兩種。兩種的差別在於,淨化過濾器會把被過濾的變數中不符合規則的東西清除掉,返回清除後的內容 而驗證過濾器只是驗證的功...

PHP除錯小技巧

在開發機環境只能只能使用vim和emacs 我用的是emacs 除錯php沒有什麼比較的工具,下面是我常用的乙個函式 file put contents tmp my.log print r array date y m d h i s line method true 該函式可以向 tmp my....

php常見小技巧

分割時間 if empty post date else 獲取當天開始到結束 time date y m d start date y m d 00 00 00 end date y m d h i s strtotime time 86399 select from unixtime 146496...