線上服務咨詢
Article/文章
記錄成長點滴 分享您我感悟
您當前位置>首頁 > 知識 > 網(wǎng)站建設
Php安全技術不容忽視
發(fā)表時間:2019-07-30 16:34:30
文章來源:沈陽軟件開發(fā)
標簽:網(wǎng)站建設 小程序開發(fā) 小程序制作 微信小程序開發(fā) 公眾號開發(fā) 微信公眾號開發(fā) 網(wǎng)頁設計 網(wǎng)站優(yōu)化 網(wǎng)站排名 網(wǎng)站設計 微信小程序設計 小程序定制 微信小程序定制
瀏覽次數(shù):0
安全性一直是編程語言中值得關注的領域。在任何成熟的編程語言中,都有合適的方法來確保程序的安全性。在現(xiàn)代WEB開發(fā)中,我們經(jīng)常需要處理用戶輸入。 (所以在這個時候,問題就來了。)有一個編程格言:不要相信用戶輸入的安全性。所以,今天我將介紹一些最常用的方法來為PHP代碼提供安全性。
PHP中有許多方便的函數(shù)可以幫助您避免SQL注入和XSS攻擊。現(xiàn)在讓我們來看看為項目增加安全性的這些函數(shù)。但請注意,這只是一些常用功能的列表,可能并不全面,但我相信它們對您的項目非常有幫助。
Mysql_real_escape_string(string sqlQuery):
●考慮到連接的當前字符集,轉義SQL語句中使用的字符串中的特殊字符。一個非常有用的函數(shù),可以有效地避免SQL注入。
將轉換以下字符:
\ X00,\ N,\ r \”,”,\ X1A
在執(zhí)行sql語句之前,使用此函數(shù)執(zhí)行sql查詢將會破壞底座中的一些危險。
但是現(xiàn)在在更成熟的項目中,通常建議使用像PDO這樣的數(shù)據(jù)庫持久層來處理所有數(shù)據(jù)庫操作。它們代表了一種更先進的數(shù)據(jù)庫操作處理技術,在安全性和數(shù)據(jù)讀寫速度方面比舊的mysql_ * api強大得多。
Addslashes():
將某些數(shù)據(jù)插入數(shù)據(jù)庫時,此功能非常有用。它可以在一個反引號之前,以便插入數(shù)據(jù)而不會出錯。但它的使用與php.ini中的設置有關 - magic_quotes_gpc
1.對于PHP magic_quotes_gpc=on,我們可以對輸入和輸出數(shù)據(jù)庫的字符串數(shù)據(jù)執(zhí)行addslashes()和stripslashes()操作,數(shù)據(jù)將正常顯示。
如果此時對輸入數(shù)據(jù)執(zhí)行addlashes(),則必須使用stripslashes()在輸出時刪除額外的反斜杠。
2.對于PHP magic_quotes_gpc=off
必須使用addslashes()處理輸入數(shù)據(jù),但不需要使用stripslashes()來格式化輸出,因為addslashes()不會向數(shù)據(jù)庫寫入反斜杠,只是為了幫助mysql完成sql語句的執(zhí)行。
[stripslashes():刪除addslashes()函數(shù)添加的反斜杠。 】
Htmitientities():
處理輸出的一個非常有用的功能。它用于將可能導致XXS攻擊的某些字符轉換為html實體。瀏覽器顯示這些字符時這些字符是正常的,但是當您查看其源代碼時,他將不會顯示這些特殊字符。這樣,例如
輸出:
約翰& “亞當斯”
源代碼:
約翰&安培; '亞當斯';
輸出:
<>
源代碼:
<&的GT,GT;
有效地編碼這些符號可以避免XSS攻擊。
用htmlspecialchars():
它與上面的函數(shù)相同,但它更常見,因為htmlentities()將html標準中定義的所有字符轉換為相應的html實體,這將使您的輸出更不可讀(Html實體列表http://www.w3school.com。 CN /標簽/html_ref_entities.html)。因此,使用htmlspecialchars()只是將一些預定義的字符(導致問題)轉換為html實體。例如:
&安培; (和)成為&
“(雙引號)變?yōu)椤?/p>
'(單引號)變?yōu)?
< (小于)變?yōu)椋t;<>
> (大于)變?yōu)椋t;
所以,在某些項目中,我仍然使用htmlspecialchars()來處理html的輸出。他在安全方面更具體。
Strip_tags():通常用于輸出以去除HTML,XML和PHP標記。
原型:strip_tags(string,allow)
String表示輸入字符串,allow表示未刪除的標簽。您可以使用allow來自定義要過濾的標簽
Md5():
將字符串轉換為32位哈希值(無法進行反向解碼)的函數(shù)。任何字符串都可以通過此函數(shù)獲得唯一的32位字符串。但是,現(xiàn)在使用此功能時,需要注意一些數(shù)據(jù)庫記錄中的大量md5值,通過強力枚舉破解密碼,因此在使用時,可以先在原始字符串中添加一個圖層。密度,然后使用md5()哈希,將獲得更好的結果。
Sha1():
一個類似于md5()和類似的函數(shù),但他使用不同的算法生成一個40個字符的字符串。可以考慮在項目中使用。
Intval():
也許您認為此功能不是安全功能。但在某些情況下,它可以很好地保護您的代碼。從用戶收集的一些數(shù)據(jù)(如ID,密碼和用戶名)可能會消除一些安全風險。畢竟,這是受災最嚴重的地區(qū)
標簽:& nbsp& nbspMarketing type 網(wǎng)站建設& nbspMarketing type 網(wǎng)站& nbsp沈陽Marketing type 網(wǎng)站建設網(wǎng)站建設,小程序開發(fā),小程序制作,微信小程序開發(fā),公眾號開發(fā),微信公眾號開發(fā),網(wǎng)頁設計,網(wǎng)站優(yōu)化,網(wǎng)站排名,網(wǎng)站設計,微信小程序設計,小程序定制,微信小程序定制