一、表單測試: 空白字符,控制字符,非字母數(shù)據(jù)(如符號&,*等),超長輸入(大于256個字符),留言版垃圾,二進制數(shù)據(jù),其他編碼數(shù)據(jù)(如ASICII,UTF-8,十六進制,八進制等),SQL諸如,XSS 處理:設定長度規(guī)則(合法用戶不會寫小說),若能發(fā)郵件的地方只能一次一個發(fā)一人,錯誤處理進行重定向或錯誤提示, 二、系統(tǒng)調(diào)用:exec(),sysetem(),backtick。 1.部署的正式環(huán)境去掉sudo命令(禁止該命令) 2.使用escapeshellcmd(),escapeshellarg()進行轉義保護系統(tǒng)調(diào)用, 3.使用固定方式調(diào)用系統(tǒng)命令,封裝api,如將exec()來移動文件封裝為只接受文件名的函數(shù)調(diào)用,避免直接調(diào)用,讓api功能單一,exec()帶太多額外不方便檢測,如只接受文件名的函數(shù)則更容易檢測變量是否滿足條件 4.驗證用戶的輸入 三、緩沖區(qū)溢出: 當載入程序后,程序會被保存在內(nèi)存中,內(nèi)存其他部分也就是緩沖區(qū),將被用來保存程序數(shù)據(jù)(作為全局變量保存)、任何程序設計的函數(shù)庫以及兩個數(shù)據(jù)結構(堆棧和堆),堆棧是從下往上填充,若參數(shù)大于參數(shù)的緩沖區(qū)所準備的空間,它將覆蓋下一個可用的內(nèi)存地址,返回地址緩沖區(qū),于是返回結果可能為一段惡意結構, 四、密碼強度: 1.避免任何語言的字典單詞 2.使用大小寫字母或其他字符組合 3.密碼長度大于6-8位,可以更多 4.創(chuàng)建密碼提示符代替答案,如一句話的首寫字母 5.定期修改密碼 6.是否以加密的方式存儲密碼 7.保存密碼的數(shù)據(jù)庫是否安全 8.若賬戶可以發(fā)送郵件,是否實現(xiàn)了驗證碼來過濾避免自動腳本創(chuàng)建賬戶 5.會話安全:會話固化,會話劫持,會話毒化(注入) 六、xss跨站攻擊(htmlspecialchars, strip_tags),sql注入(mysql_real_escape_string, addslashes),csrf,掛馬,危險腳本(如phpinfo這種暴露版本信息),遠程文件包含allow_url_include=Off,管理后臺泄露(單一入口在目錄,其他php不再web目錄),身份權限驗證 七、apache配置: php.ini中disable_functions可以禁用php函數(shù)(如disable_functions = phpinfo,gzcompress,apache_note,apache_setenv,proc_get_status,exec,passthru,proc_nice,proc_open,proc_terminate,shell_exec,system,popen,ini_restore,syslog,define_syslog_variables,symlink,link,error_log,leak,dbmopen,openlog,closelog,popen,pclose,stream_socket_server) 1.隱藏版本信息和http頭信息:ServerSignature Off,ServerTokens Prod,隱藏php錯誤(php.ini expose_php = On) 2.目錄遍歷 3.將apache限制在自身目錄結構中,http.conf設置<Directory 目錄> Order….Deny……..</Directory>,在非web目錄不能打開php腳本,比如上傳目錄不能運行 4.關閉多于的配置和模塊 5.使用ModSecurity包過濾工具(有利有弊,如增加了開銷,還會將空格,點號,左方括號轉換為下劃線等) 額外補充: Path Traversal(目錄遍歷) 漏洞描述 目錄遍歷指的是應用程序對文件路徑?jīng)]有檢查導致服務器上的敏感文件/代碼泄漏。 安全隱患 可能會導致源代碼等敏感信息泄露。 修復建議 嚴格檢查文件路徑參數(shù),限制在指定的范圍。嚴格限制文件路徑參數(shù),不允許用戶控制文件路徑相關的參數(shù),限定文件路徑范圍。 在php.ini中進行如下配置: open_basedir = 服務器上WEB目錄的路徑(注,路徑最后需要加上斜杠作為結束),如:open_basedir = /var/www/html/ Directory Indexing(目錄泄露) 漏洞描述 應用服務器配置不當,導致應用服務器的目錄列表被展示。 安全隱患 可能會導致敏感信息或源代碼泄露。 修復建議 配置應用服務器禁止目錄列表展示。 apache修改方法: <Directory “E:/www”>下面的 Options Indexes FollowSymLinks 改成 Options FollowSymLinks 然后
改成
八、保護MySQL: 1.單機的話則關閉遠程訪問或則只能固定ip訪問 2.修改管理員root用戶名且增加密碼不為空 3.為一個應用開啟單獨的賬戶和密碼設置最小化的權限,如不能刪除數(shù)據(jù)表等 4.刪除多于的MySQL賬戶和數(shù)據(jù)庫(如test) 九、php配置php.ini: 1.safe_mod,safe_mod_gid開關 2.open_basedir,safe_mode_exec_dir 3.expose_php,register_globals,session_cookie_lifetime 4.diplay_errors 5.遠程文件打開等 十、Fuzz測試:PowerFuzzer,測試工具集:CAL9000 |
|
來自: 代碼小伙兒 > 《Web開發(fā)》