摘要:原文譯文有用的安全函數(shù)譯者安全是編程非常重要的一個(gè)方面。一起看看中常用的可以確保項(xiàng)目安全的函數(shù)?,F(xiàn)在這個(gè)函數(shù)并不被認(rèn)為是安全的,因?yàn)殚_源的數(shù)據(jù)庫(kù)可以反向檢查一個(gè)散列值的明文。也不要把絕對(duì)安全寄托在這個(gè)函數(shù)上,否則會(huì)有意想不到的結(jié)果。
原文:Useful functions to provide secure PHP application
譯文:有用的PHP安全函數(shù)
譯者:dwqs
安全是編程非常重要的一個(gè)方面。在任何一種編程語(yǔ)言中,都提供了許多的函數(shù)或者模塊來確保程序的安全性。在現(xiàn)代網(wǎng)站應(yīng)用中,經(jīng)常要獲取來自世界各地用戶的輸入,但是,我們都知道“永遠(yuǎn)不能相信那些用戶輸入的數(shù)據(jù)”。所以在各種的Web開發(fā)語(yǔ)言中,都會(huì)提供保證用戶輸入數(shù)據(jù)安全的函數(shù)。今天,我們就來看看,在著名的開源語(yǔ)言PHP中有哪些有用的安全函數(shù)。
在PHP中,有些很有用的函數(shù)開源非常方便的防止你的網(wǎng)站遭受各種攻擊,例如SQL注入攻擊,XSS(Cross Site Scripting:跨站腳本)攻擊等。一起看看PHP中常用的、可以確保項(xiàng)目安全的函數(shù)。注意,這并不是完整的列表,是我覺得對(duì)于你的i項(xiàng)目很有的一些函數(shù)。
1. mysql_real_escape_string()這個(gè)函數(shù)在PHP中防止SQL注入攻擊時(shí)非常有用。這個(gè)函數(shù)會(huì)對(duì)一些例如單引號(hào)、雙引號(hào)、反斜杠等特殊字符添加一個(gè)反斜杠以確保在查詢這些數(shù)據(jù)之前,用戶提供的輸入是干凈的。但要注意,你是在連接數(shù)據(jù)庫(kù)的前提下使用這個(gè)函數(shù)。
但是現(xiàn)在已經(jīng)不推薦使用mysql_real_escape_string()了,所有新的應(yīng)用應(yīng)該使用像PDO一樣的函數(shù)庫(kù)執(zhí)行數(shù)據(jù)庫(kù)操作,也就是說,我們可以使用現(xiàn)成的語(yǔ)句防止SQL注入攻擊。
2. addslashes()這個(gè)函數(shù)的原理跟mysql_real_escape_string()相似。但是當(dāng)在php.ini文件中,“magic_quotes_gpc“的值是“on”的時(shí)候,就不要使用這個(gè)函數(shù)。magic_quotes_gpc 的默認(rèn)值是on,對(duì)所有的 GET、POST 和 COOKIE 數(shù)據(jù)自動(dòng)運(yùn)行 addslashes()。不要對(duì)已經(jīng)被 magic_quotes_gpc 轉(zhuǎn)義過的字符串使用 addslashes(),因?yàn)檫@樣會(huì)導(dǎo)致雙層轉(zhuǎn)義。你可以使用get_magic_quotes_gpc()函數(shù)來確定它是否開啟。
3. htmlentities()這個(gè)函數(shù)對(duì)于過濾用戶輸入的數(shù)據(jù)非常有用。它會(huì)將一些特殊字符轉(zhuǎn)換為HTML實(shí)體。例如,用戶輸入<時(shí),就會(huì)被該函數(shù)轉(zhuǎn)化為HTML實(shí)體<(<),輸入>就被轉(zhuǎn)為實(shí)體>.(HTML實(shí)體對(duì)照表:http://www.w3school.com.cn/html/html_entities.asp),可以防止XSS和SQL注入攻擊。
4. htmlspecialchars()在HTML中,一些特定字符有特殊的含義,如果要保持字符原來的含義,就應(yīng)該轉(zhuǎn)換為HTML實(shí)體。這個(gè)函數(shù)會(huì)返回轉(zhuǎn)換后的字符串,例如‘&’ (ampersand) 轉(zhuǎn)為’&‘(ps:請(qǐng)參照第三點(diǎn)中的實(shí)體對(duì)照表鏈接)
附上此函數(shù)常見的轉(zhuǎn)換字符:
The translations performed are:
‘&’ (ampersand) becomes ‘&’ ‘”‘ (double quote) becomes ‘"’ when ENT_NOQUOTES is not set. “‘” (single quote) becomes ‘'’ (or ') only when ENT_QUOTES is set. ‘<’ (less than) becomes ‘<’ ‘>’ (greater than) becomes ‘>’5. strip_tags()
這個(gè)函數(shù)可以去除字符串中所有的HTML,JavaScript和PHP標(biāo)簽,當(dāng)然你也可以通過設(shè)置該函數(shù)的第二個(gè)參數(shù),讓一些特定的標(biāo)簽出現(xiàn)。
6. md5()從安全的角度來說,一些開發(fā)者在數(shù)據(jù)庫(kù)中存儲(chǔ)簡(jiǎn)單的密碼的行為并不值得推薦。md5()函數(shù)可以產(chǎn)生給定字符串的32個(gè)字符的md5散列,而且這個(gè)過程不可逆,即你不能從md5()的結(jié)果得到原始字符串。
現(xiàn)在這個(gè)函數(shù)并不被認(rèn)為是安全的,因?yàn)殚_源的數(shù)據(jù)庫(kù)可以反向檢查一個(gè)散列值的明文。你可以在這里找到一個(gè)MD5散列數(shù)據(jù)庫(kù)列表
7. sha1()這個(gè)函數(shù)與md5()類似,但是它使用了不同的算法來產(chǎn)生40個(gè)字符的SHA-1散列(md5產(chǎn)生的是32個(gè)字符的散列)。也不要把絕對(duì)安全寄托在這個(gè)函數(shù)上,否則會(huì)有意想不到的結(jié)果。
8. intval()先別笑,我知道這個(gè)函數(shù)和安全沒什么關(guān)系。intval()函數(shù)是將變量轉(zhuǎn)成整數(shù)類型,你可以用這個(gè)函數(shù)讓你的PHP代碼更安全,特別是當(dāng)你在解析id,年齡這樣的數(shù)據(jù)時(shí)。
原文首發(fā):http://www.ido321.com/1202.html
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31902.html
摘要:簡(jiǎn)單字符串緩存實(shí)戰(zhàn)完整實(shí)戰(zhàn)種設(shè)計(jì)模式設(shè)計(jì)模式是面向?qū)ο蟮淖罴褜?shí)踐成為專業(yè)程序員路上用到的各種優(yōu)秀資料神器及框架成為一名專業(yè)程序員的道路上,需要堅(jiān)持練習(xí)學(xué)習(xí)與積累,技術(shù)方面既要有一定的廣度,更要有自己的深度。 微型新聞系統(tǒng)的開發(fā)(PHP 5.4 + MySQL 5.5) 微型新聞系統(tǒng)的開發(fā)(PHP 5.4 + MySQL 5.5) 九個(gè)很有用的 PHP 代碼 php 代碼 國(guó)內(nèi)值得關(guān)注的...
摘要:那些瑣碎的知識(shí)點(diǎn)作者記錄的的很奇特很難記的知識(shí)點(diǎn)。易錯(cuò)知識(shí)點(diǎn)整理注意和的區(qū)別中和都是輸出的作用,但是兩者之間還是有細(xì)微的差別。今天手頭不忙,總結(jié)一下,分享過程中掌握的知識(shí)點(diǎn)。 深入理解 PHP 之:Nginx 與 FPM 的工作機(jī)制 這篇文章從 Nginx 與 FPM 的工作機(jī)制出發(fā),探討配置背后的原理,讓我們真正理解 Nginx 與 PHP 是如何協(xié)同工作的。 PHP 那些瑣碎的知識(shí)...
摘要:但最近又聽說了另一種跨站攻擊,于是找了些資料了解了一下,并與放在一起做個(gè)比較。腳本中的不速之客全稱跨站腳本,是注入攻擊的一種。 XSS:跨站腳本(Cross-site scripting) CSRF:跨站請(qǐng)求偽造(Cross-site request forgery) 在那個(gè)年代,大家一般用拼接字符串的方式來構(gòu)造動(dòng)態(tài) SQL 語(yǔ)句創(chuàng)建應(yīng)用,于是 SQL 注入成了很流行的攻擊方式。...
摘要:怎樣才算是高性能的應(yīng)用性能和速度不是一對(duì)同義詞。紅線表示針對(duì)速度進(jìn)行了優(yōu)化的腳本,藍(lán)線是可擴(kuò)展性優(yōu)先的腳本。將任何這些功能置于循環(huán)中可能會(huì)導(dǎo)致性能問題。完整的代碼檢測(cè)評(píng)估雖然可能很耗時(shí),但它可以為你提供有關(guān)應(yīng)用程序性能的深入信息。 showImg(https://segmentfault.com/img/bVNxDn?w=900&h=500);程序員都喜歡最新的PHP 7,因?yàn)樗筆H...
以下是Java技術(shù)棧微信公眾號(hào)發(fā)布的關(guān)于 Java 的技術(shù)干貨,從以下幾個(gè)方面匯總。 Java 基礎(chǔ)篇 Java 集合篇 Java 多線程篇 Java JVM篇 Java 進(jìn)階篇 Java 新特性篇 Java 工具篇 Java 書籍篇 Java基礎(chǔ)篇 8張圖帶你輕松溫習(xí) Java 知識(shí) Java父類強(qiáng)制轉(zhuǎn)換子類原則 一張圖搞清楚 Java 異常機(jī)制 通用唯一標(biāo)識(shí)碼UUID的介紹及使用 字符串...
閱讀 3116·2023-04-25 16:50
閱讀 921·2021-11-25 09:43
閱讀 3532·2021-09-26 10:11
閱讀 2529·2019-08-26 13:28
閱讀 2542·2019-08-26 13:23
閱讀 2433·2019-08-26 11:53
閱讀 3577·2019-08-23 18:19
閱讀 3000·2019-08-23 16:27