目錄結構
由於越來越多的專案開始使用框架,所以,很多的程式設計師也不在關心安全的問題!因為框架已經幫我們幾乎完美的處理了!但是,個人認為,我們還是需要了解一下常用的安全處理函式!
原因簡單:很多小的功能和專案是用不到框架的,我們需要自己解決安全問題!
mysql_real_escape_string()
addslashes()
mysql_real_escape_string()和addslashes()函式都是對資料中的 單引號、雙引號進行轉義!也就是防止sql注入!
但是mysql_real_escape_string()考慮了字符集,更加的安全一些!
經過查閱相關的資料,可以得出乙個結論:當前的字符集是單位元組的話,這兩個函式作用相同,都可以起到轉義過濾的作用,但是,有誰會只是用單位元組呢?尤其是utf8越來越廣泛的被使用到!
在了解mysql_real_escape_string()和addslashes()這兩個函式的用法的時候,我們必須先了解另外兩個函式的含義!
get_magic_quotes_gpc()和get_magic_quotes_runtime(),我們來比較一下兩個函式的異同:
相同:
a、兩者都是用來獲取php.ini配置檔案的配置情況的!當開啟的時候返回1,關閉的時候返回0!b、當開啟的時候,都會對指定範圍內的資料進行轉義過濾!
不同:a、兩者的作用範圍不同:明白了get_magic_quotes_gpc()和get_magic_quotes_runtime()這兩個函式的後,我們就應該明白了:當我們檢測到php.ini配置檔案開啟了magic_quotes_runtime 和 magic_quotes_gpc的話,就會自動的對指定範圍內的資料進行轉義!如果關閉的話,我們就需要使用mysql_real_escape_string()[或者addslashes函式進行過濾]magic_quotes_gpc主要作用於web客戶端,簡單的說主要是對$_get、$_post、$_cooke中的資料進行過濾!
magic_quotes_runtime主要是對檔案中讀取的資料進行過濾!
b、設定時間不同:
magic_quotes_gpc不可以在執行時進行設定[只能在重啟伺服器的時候讀取該設定]
magic_quotes_runtime可以在執行時設定!
注意:所謂執行時設定,就是,我們可以通過ini_set()函式,在指令碼中對php.ini檔案中的配置進行設定!
1、無論magic_quotes_gpc和magic_quotes_runctime開啟還是關閉的情況下getdata.php指令碼,都可以對資料進行安全轉義,內容如下:
1在sourcedata.txt中的內容如下:<?php
2if(!get_magic_quotes_gpc
()) 6}
7if(!get_magic_quotes_runtime
()) 13}
14}15$gpcdata = implode("\t", $_get
);16
$runtimedata = implode("\t", $sourcedatarecord
);17
echo
$gpcdata, $runtimedata
;18 ?>
我們請求getdata.php時的url如下:" it's anoterh sunday afternooni'm trunning turnning.....turnning around "
執行結果如下:
maw\'eibin 25\" it\'s anoterh sunday afternoon\r\n i\'m trunning另外,php還有專門的filter函式集及過濾器。turnning.....turnning around \"
php 過濾器(filter)
php filter 函式
部分來自:
php常用的安全過濾函式
由於越來越多的專案開始使用框架,所以,很多的程式設計師也不在關心安全的問題!因為框架已經幫我們幾乎完美的處理了!但是,個人認為,我們還是需要了解一下常用的安全處理函式!原因簡單 很多小的功能和專案是用不到框架的,我們需要自己解決安全問題!mysql real escape string addsla...
PHP安全 過濾
我們在開發應用時,一般有個約定 不要信任任何來自不受自己控制的資料來源中的資料。例如以下這些外部源 所有這些外部源都可能是攻擊媒介,可能會 有意或無意 把惡意資料注入php指令碼。編寫接收使用者輸入然後渲染輸出的php指令碼很容易,可是要安全實現的話,需要下一番功夫。我這裡以陳咬金的三板斧為引子,給...
php filter 安全過濾函式
php 利用filter 擴充套件編寫的引數處理靜態類,歡迎使用。希望大家看得開心,用得放心。引數驗證函式 method license created 2011年07月02日 11時00分 author martin abstract class cfilter 驗證型別 param string...