溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

對PHP安全相關(guān)的函數(shù)有哪幾個

發(fā)布時間:2021-10-15 09:52:12 來源:億速云 閱讀:139 作者:柒染 欄目:編程語言

本篇文章為大家展示了對PHP安全相關(guān)的函數(shù)有哪幾個,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

  在PHP 中有許多方便的函數(shù)可以幫助你免于類似于 SQL注入,XSS攻擊。現(xiàn)在讓我們來看一下這些能夠給你的項目增加安全性的函數(shù)吧。但是,請注意,這里只是一些常用的函數(shù)的列表,也許他們并不全面,但是我相信他們都是對你的項目是非常有幫助的。

  安全一直是一個在編程語言中非常值得去關(guān)注的方面。在任何一種成熟的編程語言中都有合適的辦法來保證程序的安全性,在現(xiàn)代的 WEB 開發(fā)中,我們常常需要去處理用戶的輸入。(那么這時候,問題就來了)有一句編程格言是:千萬不要相信用戶輸入的安全性。所以呢,今天就介紹一些在PHP 中最常用的為你的代碼提供安全保護(hù)的方法。

  PHP中,有些很有用的函數(shù)開源非常方便的防止你的網(wǎng)站遭受各種攻擊,例如SQL注入攻擊,XSS(Cross Site Scripting:跨站腳本)攻擊等。一起看看PHP中常用的確保安全的函數(shù)(注意,這并不是完整的列表)。

  對PHP安全相關(guān)的函數(shù)

  mysql_real_escape_string( string sqlQuery )?:

  轉(zhuǎn)義 SQL 語句中使用的字符串中的特殊字符,并考慮到連接的當(dāng)前字符集。一個非常有用的函數(shù),可以有效地避免 SQL 注入。

  以下字符會被轉(zhuǎn)換:

  , , ,,’,”,

  在執(zhí)行sql語句之前,對要將執(zhí)行的sql query 使用該函數(shù)處理,會將一些危 險扼殺在搖籃中。

  但是現(xiàn)在一般在較為成熟的項目中,一般比較推薦使用類似 PDO 這樣的數(shù)據(jù)庫持久層來處理所有的數(shù)據(jù)庫操作。他們代表著更為先進(jìn)的數(shù)據(jù)庫操作處理技術(shù),在安全性,數(shù)據(jù)讀寫的速度上逗比那些古老的 mysql_* api 強(qiáng)大了不少。

  addslashes() :

  在將一些數(shù)據(jù)插入到數(shù)據(jù)庫中時,這個函數(shù)會非常有用,它可以在單引號前加上反斜杠,使得數(shù)據(jù)在插入時不會出現(xiàn)錯誤。但是它的使用與php.ini 中的一項設(shè)置有關(guān)系 — magic_quotes_gpc

  1. 對于PHP magic_quotes_gpc=on的情況, 我們可以不對輸入和輸出數(shù)據(jù)庫的字符串?dāng)?shù)據(jù)作addslashes()和stripslashes()的操作,數(shù)據(jù)也會正常顯示。

  如果此時你對輸入的數(shù)據(jù)作了addslashes()處理,那么在輸出的時候就必須使用stripslashes()去掉多余的反斜杠。

  2. 對于PHP magic_quotes_gpc=off 的情況

  必須使用addslashes()對輸入數(shù)據(jù)進(jìn)行處理,但并不需要使用stripslashes()格式化輸出,因?yàn)閍ddslashes()并未將反斜杠一起寫入數(shù)據(jù)庫,只是幫助mysql完成了sql語句的執(zhí)行。

  【stripslashes() :刪除由 addslashes() 函數(shù)添加的反斜杠?!?/p>

  htmlentities() :

  一個非常有用的用來處理輸出的函數(shù)。它用來將一些可能導(dǎo)致XXS攻擊的字符轉(zhuǎn)化為html實(shí)體,這些字符在瀏覽器顯示的時候是正常的,但是當(dāng)你查看它的源代碼時,實(shí)際上這些特殊字符必不會是他顯示的那樣,例如

  輸出:

  John & ‘Adams’

  源碼:

  John & 'Adams';

  輸出:

  <>

  源碼:

  <>gt;

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

  htmlspecialchars():

  和上面的函數(shù)是一樣的,但是它更常用一些,因?yàn)?htmlentities() 是將所有的有在html 標(biāo)準(zhǔn)中定義了的字符轉(zhuǎn)換成他們對應(yīng)的html實(shí)體,這樣會是你的輸出缺乏易讀性(html 實(shí)體列表 http://www.w3school.com.cn/tags/html_ref_entities.html)。所以呢,使用 htmlspecialchars() 只是將一些 預(yù)定義的字符(就是會導(dǎo)致出現(xiàn)問題的)轉(zhuǎn)換為html實(shí)體。例如:

  & (和號) 成為 &

  ” (雙引號) 成為 ”

  ‘ (單引號) 成為 ‘

  < (小于) 成為 <   > (大于) 成為 >

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

  strip_tags(): 一般在輸出時使用,將HTML、XML 以及 PHP 的標(biāo)簽剝?nèi)ァ?/p>

  函數(shù)原型:strip_tags(string,allow)

  String 代表輸入的字符串,allow 代表 不刪除的標(biāo)簽,你可以通過 allow 來自定義過需要濾掉的標(biāo)簽

  md5() :

  一個將字符串轉(zhuǎn)換為一個32位的哈希值的函數(shù)(不能逆向解密),任何一個字符串都能通過這個函數(shù)獲得一個唯一的32位字符串。但是,現(xiàn)在使用這個函數(shù)時,需要注意有一些數(shù)據(jù)庫記錄了大量的md5 值,通過暴力枚舉的方式來破解你的密碼,所以在使用的時候,你可以先將你的原字符串加一層密,然后再使用md5()哈希,會獲得更好的效果。

  sha1() :

  和md5() 和相似的一個函數(shù),但是他使用不同的算法生成一個 40個字符的字符串。可以在項目中考慮使用

  intval() :

  也許你認(rèn)為這個函數(shù)不是一個 security function。但是它在某些情況下可以很好地保護(hù)你的code。對從用戶收集到的一些數(shù)據(jù)例如 ID,password,username處理,也許可以消除一些安全隱患,畢竟這里是重災(zāi)區(qū)。

上述內(nèi)容就是對PHP安全相關(guān)的函數(shù)有哪幾個,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI