PHP安全防範

2021-06-05 18:11:15 字數 2096 閱讀 4818

php**安全和xss,sql注入等對於各類**的安全非常中用,尤其是ugc(user generated content)**,論壇和電子商務**,常常是xss和sql注入的重災區。這裡簡單介紹一些基本程式設計要點, 相對系統安全來說,php

安全防範更多要求程式設計人員對使用者輸入的各種引數能更細心.

建議安裝suhosin補丁,必裝安全補丁

register_global = off

magic_quotes_gpc = off

display_error = off

log_error = on

# allow_url_fopen = off

expose_php = off

open_basedir =

safe_mode = on

disable_function = exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show_source,get_cfg_var

safe_mode_include_dir =

mysql_real_escape_string (很多phper仍在依靠addslashes防止sql注入,但是這種方式對中文編碼仍然是有問題的。addslashes的問題在於黑客可以用0xbf27來代替單引號,gbk編碼中0xbf27不是乙個合法字元,因此addslashes只是將0xbf5c27,成為乙個有效的多位元組字元,其中的0xbf5c仍會被看作是單引號,具體見這篇文章)。用mysql_real_escape_string函式也需要指定正確的字符集,否則依然可能有問題。

prepare + execute(pdo)

zendframework可以用db類的quote或者quoteinto, 這兩個方法是根據各種資料庫實施不用方法的,不會像mysql_real_escape_string只能用於mysql

無需保留html標籤的可以用以下方法

strip_tags, 刪除string中所有html標籤

htmlspecialchars,只對」<」,」>」,」;」,」』」字元進行轉義

htmlentities,對所有html進行轉義

必須保留html標籤情況下可以考慮以下工具:

html purifier: html purifier is a standards-compliant html filter library written inphp.

php html sanitizer: remove unsafe tags and attributes from html code

htmlawed:php code to purify & filter html

用is_uploaded_file和move_uploaded_file函式,使用http_post_files陣列。並通過去掉上傳目錄的php解釋功能來防止使用者上傳php指令碼。

zf框架下可以考慮使用file_upload模組

不要依賴cookie進行核心驗證,重要資訊需要加密, form post之前對傳輸資料進行雜湊, 例如你發出去的form元素如下:

"/>

"/>

<?php $sign = md5('name'.$oname.'age'.$oage.$secret); ?>

php echo $sign?>"" />

post回來之後對引數進行驗證

$str = "";

foreach($_post['h'] as $key=>$value)

if($_post['hash'] != md5($str.$secret))

pixy: xss and sqli scanner forphp( pixy – php

原始碼缺陷分析工具)

安裝:apt-get install default-jdk

remotephp

vulnerability scanner(自動化php頁面缺陷分析, xss檢測功能較強)

phpids –php

入侵檢測系統

甲方安全防範

好了,言歸正傳了,沒錢還想搞安全,怎麼辦?用免費的代替唄。下面給大家說我的一下替代方案。為啥放首位了,因為這款漏掃沒什麼好介紹的,強烈推薦 直接部署在網路當中,路由可達即可。與收費漏掃相比較,掃瞄結果略有不同,都能掃到對方掃不到的。所以,還是一款值得推薦的免費漏掃。直接部署在網路當中,對客戶端路由可...

web層安全防範

1.銘記乙個基本原則 永遠也不要相信使用者的輸入!2.輸入檢測。是否驗證了它的 是否檢查了字段的長度?為空或者超長是否會產生問題?是否限制了字段的可用字符集?數值型 英文本母 可見字元 中文字元,etc是否含有對程式有特殊含義的字元?是否限制了字段的取值範圍 特別是數值型資料 是否限制了字段的格式?...

RouterOS 安全防範設定

將預設使用者名稱admin更改為其他名稱 user set 0 name myros 設定高強度的密碼 user set 0 password d 2bbsweube3 通過ip位址訪問 user set 0 allowed address x yy 只保留安全的服務 ip service disa...