php 5.2 以上提供了乙個非常簡單好用的自帶函式 filter_var ,下面是對這個函式使用的詳細介紹。
驗證資料型別是否為boolean
舉例:[php]view plain
copy
<?php
$value01
= true;
if(filter_var(
$value01
,filter_validate_boolean)) else
echo''
;
$value02
= true;
if(filter_var(
$value02
,filter_validate_boolean)) else
?>
filter_validate_email驗證是否為email
filter_validate_float:驗證是否為浮點型
filter_validate_int:驗證是否為整型
filter_validate_ip:驗證是否是合法ip
filter_validate_url:驗證是否是合法url
filter_sanitize_string:對字串進行消毒過濾,這個引數會過濾並把不合法的使用者輸入自動去掉,例如:html標籤等。
舉例程式:
[php]view plain
copy
<?php
$value
= ""
;
echo
filter_var(
$value
, filter_sanitize_string);
echo""
; $value
= "alert('boy's book');"
; echo
filter_var(
$value
,filter_sanitize_string);
?>
[html]view plain
copy
alert('trouble here');
alert('boy's book');
filter_sanitize_encoded:對輸入的編碼進行url編碼,功能類似於urlencode。
filter_sanitize_special_chars:過濾掉所有html標籤
filter_sanitize_url:類似於filter_sanitize_email,去掉在url中無效的符號。
filter_sanitize_number_int:類似於filter_validate_int,但是他除了簡單判斷是否是整形以外,還將返回過已濾掉非數字字元的字元傳(
暈死,還是看個例子吧)
[php]view plain
copy
$value01
= '1你好嗎23abc45%#6def'
;
echo
filter_var(
$value01
, filter_sanitize_number_int);
filter_sanitize_number_float:功能目前我發現的就是同上,但是為啥既然是一樣的他們兩個還都同時存在呢,乙個最主要的原因就是當 filter_sanitize_numer_float後面加了filter_flag_allow_fraction這個引數以後就會體現不同了。(那為啥不直接就定義個可以只過濾個浮點數的引數嘞,偶也不知道
)看看這個例子吧:
[php]view plain
copy
$value
= '1.23'
;
echo
filter_var(
$value
, filter_sanitize_number_float, filter_flag_allow_fraction);
當然,避免注入還有很多其他簡單又基本的方法:
例如我們還可以用:
htmlspecialchars、htmlentities、mysql_real_escape_string
或者你甚至還可以自己定義些自己需要的方法。
好啦,就寫到這裡吧。本文很大一部分參考了getting clean with php這篇文章,在此非常感謝之:)
PHP安全 過濾
我們在開發應用時,一般有個約定 不要信任任何來自不受自己控制的資料來源中的資料。例如以下這些外部源 所有這些外部源都可能是攻擊媒介,可能會 有意或無意 把惡意資料注入php指令碼。編寫接收使用者輸入然後渲染輸出的php指令碼很容易,可是要安全實現的話,需要下一番功夫。我這裡以陳咬金的三板斧為引子,給...
php常用的安全過濾函式
由於越來越多的專案開始使用框架,所以,很多的程式設計師也不在關心安全的問題!因為框架已經幫我們幾乎完美的處理了!但是,個人認為,我們還是需要了解一下常用的安全處理函式!原因簡單 很多小的功能和專案是用不到框架的,我們需要自己解決安全問題!mysql real escape string addsla...
php常用的安全過濾函式
目錄結構 由於越來越多的專案開始使用框架,所以,很多的程式設計師也不在關心安全的問題!因為框架已經幫我們幾乎完美的處理了!但是,個人認為,我們還是需要了解一下常用的安全處理函式!原因簡單 很多小的功能和專案是用不到框架的,我們需要自己解決安全問題!mysql real escape string a...