php中的常見(jiàn)攻擊解讀
php常見(jiàn)攻擊解讀
什么是CSRF攻擊
CSRF跨站請(qǐng)求偽造
黑客建立一個(gè)偽造網(wǎng)站或發(fā)送郵箱帶了一個(gè)正常URL鏈接來(lái)讓正常用戶訪問(wèn),來(lái)讓正常用戶讓自己瀏覽器里的COOKIE權(quán)限來(lái)執(zhí)行一些非法請(qǐng)求,如轉(zhuǎn)賬,提權(quán)等操作,
防范方法有,驗(yàn)證 HTTP Referer 字段;在請(qǐng)求地址中添加 token 并驗(yàn)證;
XSS攻擊
主要將XSS代碼提交存儲(chǔ)在服務(wù)器端(數(shù)據(jù)庫(kù),內(nèi)存,文件系統(tǒng)等),下次請(qǐng)求目標(biāo)頁(yè)面時(shí)不用再提交XSS代碼。當(dāng)目標(biāo)用戶訪問(wèn)該頁(yè)面獲取數(shù)據(jù)時(shí),XSS代碼會(huì)從服務(wù)器解析之后加載出來(lái),返回到瀏覽器做正常的HTML和JS解析執(zhí)行,XSS攻擊就發(fā)生了。
防范方法:通過(guò)過(guò)濾是針對(duì)非法的HTML代碼包括單雙引號(hào)等,使用htmlspecialchars()函數(shù)
php網(wǎng)站常見(jiàn)一些安全漏洞及防御方法
常見(jiàn)PHP網(wǎng)站安全漏洞
對(duì)于PHP的漏洞,目前常見(jiàn)的漏洞有五種。分別是Session文件漏洞、SQL注入漏洞、腳本命令執(zhí)行漏洞、全局變量漏洞和文件漏洞。這里分別對(duì)這些漏洞進(jìn)行簡(jiǎn)要的介紹。
1、session文件漏洞
Session攻擊是黑客最常用到的攻擊手段之一。當(dāng)一個(gè)用戶訪問(wèn)某一個(gè)網(wǎng)站時(shí),為了免客戶每進(jìn)人一個(gè)頁(yè)面都要輸人賬號(hào)和密碼,PHP設(shè)置了Session和Cookie用于方便用戶的使用和訪問(wèn)。
2、SQL注入漏洞
在進(jìn)行網(wǎng)站開(kāi)發(fā)的時(shí)候,程序員由于對(duì)用戶輸人數(shù)據(jù)缺乏全面判斷或者過(guò)濾不嚴(yán)導(dǎo)致服務(wù)器執(zhí)行一些惡意信息,比如用戶信息查詢等。黑客可以根據(jù)惡意程序返回的結(jié)果獲取相應(yīng)的信息。這就是所謂的SQL注入漏洞。
3、腳本執(zhí)行漏洞
腳本執(zhí)行漏洞常見(jiàn)的原因是由于程序員在開(kāi)發(fā)網(wǎng)站時(shí)對(duì)用戶提交的URL參數(shù)過(guò)濾較少引起的,用戶提交的URL可能包含惡意代碼導(dǎo)致跨站腳本攻擊。腳本執(zhí)行漏洞在以前的PHP網(wǎng)站中經(jīng)常存在,但是隨著PHP版本的升級(jí),這些問(wèn)題已經(jīng)減少或者不存在了。
4、全局變量漏洞
PHP中的變量在使用的時(shí)候不像其他開(kāi)發(fā)語(yǔ)言那樣需要事先聲明,PHP中的變量可以不經(jīng)聲明就直接使用,使用的時(shí)候系統(tǒng)自動(dòng)創(chuàng)建,而且也不需要對(duì)變 量類型進(jìn)行說(shuō)明,系統(tǒng)會(huì)自動(dòng)根據(jù)上下文環(huán)境自動(dòng)確定變量類型。這種方式可以大大減少程序員編程中出錯(cuò)的概率,使用起來(lái)非常的方便。
5、文件漏洞
文件漏洞通常是由于網(wǎng)站開(kāi)發(fā)者在進(jìn)行網(wǎng)站設(shè)計(jì)時(shí)對(duì)外部提供的數(shù)據(jù)缺乏充分的過(guò)濾導(dǎo)致黑客利用其中的漏洞在Web進(jìn)程上執(zhí)行相應(yīng)的命令。假如在 lsm.php中包含這樣一段代碼:include(,這對(duì)黑客來(lái)說(shuō),可以通過(guò)變量b來(lái)實(shí)現(xiàn)遠(yuǎn)程攻擊,可以是黑客自已的 代碼,用來(lái)實(shí)現(xiàn)對(duì)網(wǎng)站的攻擊??梢韵蚍?wù)器提交a.php include=http://lZ7.0.0. 1/b.php,然后執(zhí)行b.php的指令。
PHP常見(jiàn)漏洞的防范措施
1、對(duì)于Session漏洞的防范
從前面的分析可以知道,Session攻擊最常見(jiàn)的就是會(huì)話劫持,也就是黑客通過(guò)各種攻擊手段獲取用戶的Session ID,然后利用被攻擊用戶的身份來(lái)登錄相應(yīng)網(wǎng)站。
為此,這里可以用以下幾種方法進(jìn)行防范:
- 是定期更換Session ID,更換Session ID可以用PHP自帶函數(shù)來(lái)實(shí)現(xiàn);
- 是更換Session名稱,通常情況下Session的默認(rèn)名稱是PHPSESSID,這個(gè)變量一般是在cookie 中保存的,如果更改了它的名稱,就可以阻擋黑客的部分攻擊;
- 是對(duì)透明化的Session ID進(jìn)行關(guān)閉處理,所謂透明化也就是指在http請(qǐng)求沒(méi)有使用cookies來(lái)制定Session id時(shí),Sessioin id使用鏈接來(lái)傳遞.關(guān)閉透明化Session ID可以通過(guò)操作PHP.ini文件來(lái)實(shí)現(xiàn);四是通過(guò)URL傳遞隱藏參數(shù),這樣可以確保即使黑客獲取了session數(shù)據(jù),但是由于相關(guān)參數(shù)是隱藏的,它 也很難獲得Session ID變量值。
2、對(duì)SQL注入漏洞的防范
黑客進(jìn)行SQL注入手段很多,而且靈活多變,但是SQL注入的共同點(diǎn)就是利用輸入過(guò)濾漏洞。因此,要想從根本上防止SQL注入,根本解決措施就是加 強(qiáng)對(duì)請(qǐng)求命令尤其是查詢請(qǐng)求命令的過(guò)濾。
具體來(lái)說(shuō),包括以下幾點(diǎn):
- 是把過(guò)濾性語(yǔ)句進(jìn)行參數(shù)化處理,也就是通過(guò)參數(shù)化語(yǔ)句實(shí)現(xiàn)用戶信息的輸入而不是直接把 用戶輸入嵌入到語(yǔ)句中;
- 是在網(wǎng)站開(kāi)發(fā)的時(shí)候盡可能少用解釋性程序,黑客經(jīng)常通過(guò)這種手段來(lái)執(zhí)行非法命令;
- 是在網(wǎng)站開(kāi)發(fā)時(shí)盡可能避免網(wǎng)站出現(xiàn)bug,否 則黑客可能利用這些信息來(lái)攻擊網(wǎng)站;僅僅通過(guò)防御SQL注入還是不夠的,另外還要經(jīng)常使用專業(yè)的漏洞掃描工具對(duì)網(wǎng)站進(jìn)行漏洞掃描。
3、對(duì)腳本執(zhí)行漏洞的防范
黑客利用腳本執(zhí)行漏洞進(jìn)行攻擊的手段是多種多樣的,而且是靈活多變的,對(duì)此,必須要采用多種防范方法綜合的手段,才能有效防止黑客對(duì)腳本執(zhí)行漏洞進(jìn) 行攻擊。
這里常用的方法方法有以下四種:
- 是對(duì)可執(zhí)行文件的路徑進(jìn)行預(yù)先設(shè)定??梢酝ㄟ^(guò)safe_moade_exec_dir來(lái)實(shí)現(xiàn);
- 是對(duì)命令參數(shù)進(jìn) 行處理,一般用escapeshellarg函數(shù)實(shí)現(xiàn);
- 是用系統(tǒng)自帶的函數(shù)庫(kù)來(lái)代替外部命令;
- 是在操作的時(shí)候盡可能減少使用外部命令。
4、對(duì)全局變量漏洞防范
對(duì)于PHP全局變量的漏洞問(wèn)題,以前的PHP版本存在這樣的問(wèn)題,但是隨著PHP版本升級(jí)到5.5以后,可以通過(guò)對(duì)php.ini的設(shè)置來(lái)實(shí)現(xiàn),設(shè)置ruquest_order為GPC。另外在php.ini配置文件中,可以通過(guò)對(duì)Magic_quotes_runtime 進(jìn)行布爾值設(shè)置是否對(duì)外部引人的數(shù)據(jù)中的溢出字符加反斜線。為了確保網(wǎng)站程序在服務(wù)器的任何設(shè)置狀態(tài)下都能運(yùn)行。可以在整個(gè)程序開(kāi)始的時(shí)候用 get_magic_quotes_runtime檢測(cè)設(shè)置狀態(tài)決定是否要手工處理,或者在開(kāi)始(或不需要自動(dòng)轉(zhuǎn)義的時(shí)候)用 set_magic_quotes_runtime(0)關(guān)掉。
5、對(duì)文件漏洞的防范
對(duì)于PHP文件漏洞可以通過(guò)對(duì)服務(wù)器進(jìn)行設(shè)置和配置來(lái)達(dá)到防范目的。
這里具體的操作如下:
- 是把PHP代碼中的錯(cuò)誤提示關(guān)閉,這樣可以避免黑客通過(guò) 錯(cuò)誤提示獲取數(shù)據(jù)庫(kù)信息和網(wǎng)頁(yè)文件物理路徑;
- 是對(duì)open_basedir盡心設(shè)置,也就是對(duì)目錄外的文件操作進(jìn)行禁止處理;這樣可以對(duì)本地文件或者遠(yuǎn) 程文件起到保護(hù)作用,防止它們被攻擊,這里還要注意防范Session文件和上載文件的攻擊;
- 是把safe-made設(shè)置為開(kāi)啟狀態(tài),從而對(duì)將要執(zhí)行的 命令進(jìn)行規(guī)范,通過(guò)禁止文件上傳,可以有效的提高PHP網(wǎng)站的安全系數(shù)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
php開(kāi)啟與關(guān)閉錯(cuò)誤提示適用于沒(méi)有修改php.ini的權(quán)限
本節(jié)為大家介紹的是php開(kāi)啟與關(guān)閉錯(cuò)誤提示的方法,如果不具備修改php.ini的權(quán)限,可以將如下代碼加入php文件中2014-10-10PHP實(shí)現(xiàn)QQ空間自動(dòng)回復(fù)說(shuō)說(shuō)的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)QQ空間自動(dòng)回復(fù)說(shuō)說(shuō)的方法,涉及php基于curl調(diào)用自動(dòng)回復(fù)接口的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12laravel 實(shí)現(xiàn)設(shè)置時(shí)區(qū)的簡(jiǎn)單方法
今天小編就為大家分享一篇laravel 實(shí)現(xiàn)設(shè)置時(shí)區(qū)的簡(jiǎn)單方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10php 操作數(shù)組(合并,拆分,追加,查找,刪除等)
這篇文章主要介紹了php自帶的一些操作數(shù)組的函數(shù),特整理下方便大家使用2012-07-07Php header()函數(shù)語(yǔ)法及使用代碼
Php header()函數(shù)語(yǔ)法及使用代碼詳解,這里列出了header的常用常用狀態(tài)碼。2013-11-11PHP使用curl_multi_select解決curl_multi網(wǎng)頁(yè)假死問(wèn)題的方法
這篇文章主要介紹了PHP使用curl_multi_select解決curl_multi網(wǎng)頁(yè)假死問(wèn)題的方法,結(jié)合實(shí)例形式分析了使用curl_multi的過(guò)程中并發(fā)處理事務(wù)導(dǎo)致cpu占用率過(guò)高時(shí)的解決方法,需要的朋友可以參考下2018-08-08redis+php實(shí)現(xiàn)微博(三)微博列表功能詳解
這篇文章主要介紹了redis+php實(shí)現(xiàn)微博列表功能,結(jié)合實(shí)例形式分析了php+redis獲取微博關(guān)注人列表及微博發(fā)布信息列表的相關(guān)操作技巧,需要的朋友可以參考下2019-09-09php中array_column函數(shù)簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了php中array_column函數(shù)簡(jiǎn)單實(shí)現(xiàn)方法,結(jié)合實(shí)例形式簡(jiǎn)單分析了array_column函數(shù)的功能,并針對(duì)低版本的情況給出了array_column函數(shù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-07-07