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