對PHP安全有幫助的一些函式

2021-06-27 16:21:35 字數 2584 閱讀 9307

安全一直是乙個在程式語言中非常值得去關注的方面。在任何一種成熟的程式語言中都有合適的辦法來保證程式的安全性,在現代的 web 開發中

安全一直是乙個在程式語言中非常值得去關注的方面。在任何一種成熟的程式語言中都有合適的辦法來保證程式的安全性,在現代的 web 開發中,我們常常需要去處理使用者的輸入。(那麼這時候,問題就來了)有一句程式設計格言是: 千萬不要相信使用者輸入的安全性。所以呢,今天就介紹一些在php 中最常用的為你的**提供安全保護的方法。

在php 中有許多方便的函式可以幫助你免於類似於 sql注入,xss攻擊。現在讓我們來看一下這些能夠給你的專案增加安全性的函式吧。但是,請注意,這裡只是一些常用的函式的列表,也許他們並不全面,但是我相信他們都是對你的專案是非常有幫助的。

mysql_real_escape_string( string sqlquery ) :

●轉義 sql 語句中使用的字串中的特殊字元,並考慮到連線的當前字符集。乙個非常有用的函式,可以有效地避免 sql 注入。

以下字元會被轉換:

\x00,\n,\r,\,』,」,\x1a

在執行sql語句之前,對要將執行的sql query 使用該函式處理,會將一些危 險扼殺在搖籃中。

但是現在一般在較為成熟的專案中,一般比較推薦使用類似 pdo 這樣的資料庫持久層來處理所有的資料庫操作。他們代表著更為先進的資料庫操作處理技術,在安全性,資料讀寫的速度上逗比那些古老的 mysql_* api 強大了不少。

addslashes() :

在將一些資料插入到資料庫中時,這個函式會非常有用,它可以在單引號前加上反斜槓,使得資料在插入時不會出現錯誤。但是它的使用與php.ini 中的一項設定有關係 —  magic_quotes_gpc

1. 對於php magic_quotes_gpc=on的情況, 我們可以不對輸入和輸出資料庫的字串資料作addslashes()和stripslashes()的操作,資料也會正常顯示。

如果此時你對輸入的資料作了addslashes()處理,那麼在輸出的時候就必須使用stripslashes()去掉多餘的反斜槓。

2. 對於php magic_quotes_gpc=off 的情況

必須使用addslashes()對輸入資料進行處理,但並不需要使用stripslashes()格式化輸出,因為addslashes()並未將反斜槓一起寫入資料庫,只是幫助mysql完成了sql語句的執行。

【stripslashes() :刪除由 addslashes() 函式新增的反斜槓。】

htmlentities() :

乙個非常有用的用來處理輸出的函式。它用來將一些可能導致xxs攻擊的字元轉化為html實體,這些字元在瀏覽器顯示的時候是正常的,但是當你檢視它的源**時,實際上這些特殊字元必不會是他顯示的那樣,例如

輸出:john & 『adams』

原始碼:john & 'adams';

輸出:<>

原始碼:<>gt;

編碼這些符號,有效地避免了xss 攻擊。

htmlspecialchars():

和上面的函式是一樣的,但是它更常用一些,因為 htmlentities() 是將所有的有在html 標準中定義了的字元轉換成他們對應的html實體,這樣會是你的輸出缺乏易讀性(html 實體列表 所以呢,使用 htmlspecialchars() 只是將一些 預定義的字元(就是會導致出現問題的)轉換為html實體。例如:

& (和號) 成為 &

」 (雙引號) 成為 」

『 (單引號) 成為 『

< (小於) 成為 <

> (大於) 成為 >

所以,在一些專案中,我還是常常使用 htmlspecialchars() 來處理html 的輸出的。他在安全這一方面做得更具體一些。

strip_tags():  一般在輸出時使用,將html、xml 以及 php 的標籤剝去。

函式原型: strip_tags(string,allow)

string 代表輸入的字串,allow 代表 不刪除的標籤,你可以通過 allow 來自定義過需要濾掉的標籤

md5() :

乙個將字串轉換為乙個32位的雜湊值的函式(不能逆向解密),任何乙個字串都能通過這個函式獲得乙個唯一的32位字串。但是,現在使用這個函式時,需要注意有一些資料庫記錄了大量的md5 值,通過暴力列舉的方式來破解你的密碼,所以在使用的時候,你可以先將你的原字串加一層密,然後再使用md5()雜湊,會獲得更好的效果。

sha1() :

和md5() 和相似的乙個函式,但是他使用不同的演算法生成乙個 40個字元的字串。可以在專案中考慮使用。

intval() :

也許你認為這個函式不是乙個 security function。但是它在某些情況下可以很好地保護你的code。對從使用者收集到的一些資料例如 id,password,username處理,也許可以消除一些安全隱患,畢竟這裡是重災區。

對php安全有幫助的一些函式

安全一直是乙個在程式語言中非常值得去關注的方面。在任何一種成熟的程式語言中都有合適的辦法來保證程式的安全性,在現代的web開發中,我們常常需要去處理使用者的輸入。那麼這時候,問題就來了 有一句程式設計格言是 千萬不要相信使用者輸入的安全性。所以呢,今天就介紹一些在php中最常用的為你的 提供安全保護...

PHP安全的一些想法

如果你是乙個php程式設計師,那你肯定不想看到你的程式被黑客破壞,甚至你的運營人員經常抱怨,被人搞了。當然,很多時候我們都說開發用框架比較好。之前我學習框架的時候,一樣,覺得框架學習成本高,不好學,寧可自己弄幾個類庫寫寫。但是這樣的類庫,本身對於專案沒有開發10個以上的開發人員來說,你的 安全嗎?所...

php一些函式

1.show source 函式是php中的內建函式,用於返回突出顯示php語法的檔案。通過使用html標記突出顯示語法 2.strstr 函式 定義和用法 strstr 函式搜尋字串在另一字串中是否存在,如果是,返回該字串及剩餘部分,否則返回 false。注釋 該函式是二進位制安全的。注釋 該函式...