php常用的安全過濾函數集錦,php函數集錦_PHP教程

來源:互聯網
上載者:User

php常用的安全過濾函數集錦,php函數集錦


雖然各種開發架構給我們提供了很好的安全的處理方式,但是,我們還是要注意一下安全問題的。
原因簡單:很多小的功能和項目是用不到架構的,我們需要自己解決安全問題!

①常用的安全函數有哪些:
複製代碼 代碼如下:
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、兩者的作用範圍不同:
magic_quotes_gpc主要作用於web用戶端,簡單的說主要是對$_GET、$_POST、$_COOKE中的資料進行過濾!
magic_quotes_runtime主要是對檔案中讀取的資料或從資料庫查詢得到的資料進行過濾!
b、設定時間不同:
magic_quotes_gpc不可以在運行時進行設定[只能在重啟伺服器的時候讀取該設定]
magic_quotes_runtime可以在運行時設定!
注意:所謂運行時設定,就是,我們可以通過ini_set()函數,在指令碼中對php.ini檔案中的配置進行設定!

明白了get_magic_quotes_gpc()和get_magic_quotes_runtime()這兩個函數的後,我們就應該明白了:當我們檢測到php.ini設定檔開啟了magic_quotes_runtime 和 magic_quotes_gpc的話,就會自動的對指定範圍內的資料進行轉義!如果關閉的話,我們就需要使用mysql_real_escape_string()[或者addslashes函數進行過濾]

④舉例說明:

1、無論magic_quotes_gpc和magic_quotes_runctime開啟還是關閉的情況下getdata.php指令碼,都可以對資料進行安全轉移,內容如下:
複製代碼 代碼如下:
<?php
if(!get_magic_quotes_gpc()) {
foreach($_GET as $key=> &$value) {
$value = mysql_real_escape_string($value);
}
}
if(!get_magic_quotes_runtime()) {
$sourceDataRecord= file('./sourceData.txt');
if($sourceDataRecord) {
foreach($sourceDataRecord as $sourceKey => &$sourceValue) {
$sourceValue = mysql_real_escape_string($sourceValue);
}
}
}
$gpcData = implode("\t", $_GET);
$runtimeData = implode("\t", $sourceDataRecord);
echo $gpcData, $runtimeData;
?>

在sourceData.txt中的內容如下:

複製代碼 代碼如下:
" It's anoterh sunday afternoon
I'm trunning turnning.....turnning around "

我們請求getData.php時的url如下:

php.test.com/safe/getdata.php?name=maw'eibin&age=25

執行結果如下:

複製代碼 代碼如下:
maw\'eibin 25\" It\'s anoterh sunday afternoon\r\n I\'m trunning
turnning.....turnning around \"

⑤參考資料:

http://www.bkjia.com/article/35868.htm


看到很多php的安全過濾函數,經常把一些字元給替換掉,那使用者輸入的資訊改變了不是很不好?解

正像你所說的,安全過濾,為了安全而限制使用者的行為是必須的,你想想這樣的限制針對的是什麼使用者?是有意危害網站安全的使用者。舉幾個例子:
把標題中的html標籤過濾。因為標題一般都是純文字,1.html標籤會導致布局錯亂2.會包含危險script 3.把引號等字元編碼為html實體並不會影響其最終顯示效果;
把本文中的

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.