php安全代碼小總結(jié)
一,漏洞篇
-----------------------------------------------
[1].Sql-Injection
留意:cookie及x-forward-for,寬字節(jié),報(bào)錯(cuò)注射等
挖掘漏洞參考
變量
$_GET[""],$_POST[""],$_COOKIE[""], $SERVER[""]
數(shù)據(jù)庫操作函數(shù)
mysql_query()
數(shù)字型注入防范:
1.is_numeric() ctype_digit() intval()
2.str_length()確定長(zhǎng)度
字符型注入防范:
1.mysql_real_escape_string()
2.數(shù)據(jù)庫查詢語句前加@防爆錯(cuò)
3.str_length()確定長(zhǎng)度
-----------------------------------------------
[2].Command-Execution
函數(shù):
system(),passthru(),popen(),exec()
數(shù)據(jù)庫操作函數(shù):
exec,system,popen,passthru,proc_open,shell_exec
執(zhí)行命令管道符 % | >
測(cè)試如0 | dir c:
|| 雙豎線的作用,前面語句執(zhí)行錯(cuò)誤則執(zhí)行后面語句
如xx"+||+whoami+||+echo
-----------------------------------------------
[3].File-Inclusion
函數(shù):
include(),require(),include_once(),require_once()
遠(yuǎn)程文件包含漏洞要求
allow_url_fopen() allow_url_include() file_get_contents()
繞過:zlib://和ogg://
5.2.0之后版本
data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+ //
@eval(file_get_contents('php://input')); //POST phpinfo();
配合%00截?cái),新版本自?dòng)轉(zhuǎn)義\0
-----------------------------------------------
[4].CSRF
CSRF防范策略
1>驗(yàn)證http-referer字段
安全性低,易被偽造
2>在請(qǐng)求地址中添加token并驗(yàn)證
token可在用戶登錄后存放在session中,每次請(qǐng)求時(shí)將token從session中取出,去請(qǐng)求的token對(duì)比以防范CSRF
GET方式:http://url/?=token
如果一個(gè)網(wǎng)站接受請(qǐng)求地方比較多,則在每次頁面加載時(shí)遍歷整個(gè)dom樹,在dom中每個(gè)a和form標(biāo)簽后加入token
但在動(dòng)態(tài)頁面加載后產(chǎn)生的html代碼,則需要以硬編碼的形式手工添加
這種方式安全性弱點(diǎn)在于,如在論壇等交互比較頻繁的地方hacker可構(gòu)造環(huán)境盜取token并進(jìn)而構(gòu)造csrf攻擊
故手工關(guān)閉referer
3>在HTTP頭中自定義屬性并進(jìn)行驗(yàn)證。通過XMLHttpRequest類。
通常用于Ajax方法對(duì)頁面局部的異步刷新
但適應(yīng)性一般,對(duì)已有的網(wǎng)站架構(gòu)局限性較大
-----------------------------------------------
[5].XSS(Cross Site Script)
反射型與存儲(chǔ)型
控制$_GET,$_POST,$_COOKIE 各種傳入的變量
使用htmlspecialchars()函數(shù)進(jìn)行基礎(chǔ)過濾
結(jié)合CSRF實(shí)現(xiàn)自動(dòng)化利用
-----------------------------------------------
[6].File_Upload
函數(shù):move_uploaded_file()
變量:$_FILES
php文件上傳利用form表單進(jìn)行文件上傳時(shí)必須為post使用multipart/form-data才能完整的傳遞文件數(shù)據(jù)
php利用$_FILES系統(tǒng)函數(shù)的相關(guān)參數(shù)與函數(shù)move_upload_file函數(shù)來實(shí)例把由$_FILES全局變量生成的臨時(shí)文件移動(dòng)到指定目錄完成文件的上傳
$_FILES['files']['name']客戶端文件的原名稱
$_FILES['files']['type']文件的MIME類型
$_FILES['files']['size']已上傳文件的大小
$_FILES['files']['tmp_name']儲(chǔ)存的臨時(shí)文件名,一般為系統(tǒng)默認(rèn)
$_FILES['files']['error']該文件上傳到相關(guān)的錯(cuò)誤代碼
防范方式:
1>判斷MIME TYPE文件類型如$_FILES['files']['type']=="image/jpeg",判斷文件大小,如$_FILES['files']['size']<10000 && $_FILES['files']['size']>100
2>指定上傳文件名,如依賴時(shí)間生成hash(time).jpg等方式
3>根據(jù)文件后綴名判斷文件
如file_ext=substr($filename,$strrpos($filename,'.')+1);
注意是否可能有雙擴(kuò)展名,二次上傳突破等邏輯問題
4>服務(wù)器嘗試渲染文件等方式判斷是否為圖片
5>不依賴于客戶端js腳本限制上傳文件類型
6>白名單規(guī)則
apache服務(wù)器常見上傳安全問題
1>配合.htaccess利用上傳
AllOverride ALL 允許子規(guī)則覆蓋父規(guī)則
.htaccess添加AddType Application/x-httpd-php .jpg
2>文件名解析漏洞
*.php.123
在.htaccess添加AddHandler php5-script .php,文件名中包含php擴(kuò)展名可以php腳本執(zhí)行,如x.php.jpg
.php3 .php4擴(kuò)展名
二,配置篇
1>關(guān)注漏洞信息,及時(shí)更新版本
2>php.ini httpd.conf .htaccess文件配置
1)safe_mode相關(guān)配置
2)register_globals關(guān)閉
3)open_basedir配置,防范目錄遍歷
4)allow_url_fopen關(guān)閉
5)disable_functions配置
6)magic_quotes_gpc打開
7)error_reporting=E_ALL & ~E_NOTICE
8)display_errors=Off避免攻擊者獲取更多信息
9)expose_php=Off隱藏版本信息
3>最小化服務(wù)器其他賬戶權(quán)限
4>第三方安全加固軟件安裝
5>調(diào)用第三方安全防護(hù)文件,配置php.ini
include_path=".:/php/includes"
auto_pretend_file="anti-inj.php"
auto_appent_file=
本文由站河南北大青鳥校區(qū)整編而成,如需了解更多IT資訊類的文章、新聞、課程和學(xué)習(xí)技巧、就業(yè)案例、招生詳情等問題,可以對(duì)在線咨詢老師進(jìn)行一對(duì)一問答!
推薦資訊
- 孩子不上學(xué)了學(xué)點(diǎn)什么技術(shù)好呢... 2020-11-05
- 北大青鳥河南校區(qū)官方網(wǎng)址... 2012-10-13
- 在鄭州北大青鳥計(jì)算機(jī)培訓(xùn)學(xué)校需... 2015-01-05
- 現(xiàn)在學(xué)什么專業(yè)技術(shù)比較好學(xué)IT怎... 2021-12-16
- 河南北大青鳥告訴你怎么才能成為... 2016-01-16
熱點(diǎn)資訊
- 電腦溫度多少是正常的情況呢?... 2018-09-07
- 四個(gè)策略及簡(jiǎn)單的防護(hù)方法... 2018-09-07
- 對(duì)硬盤進(jìn)行雙分區(qū)有什么好處... 2018-09-07
- 文件加密的幾個(gè)簡(jiǎn)單方法... 2018-09-07
- 計(jì)算機(jī)小技巧,80G硬盤巧變變成... 2018-09-07