1. SQL注入文件寫入(需要用戶驗證)
解決辦法:通過建立過濾器方法,對所有用戶輸入信息進行清理過濾。通過清理過濾用戶輸入所包含的危險字符,便可能防止惡意的用戶導致應用程序執行計划外的任務,例如:啟動任意 SQL 查詢、嵌入將在客戶端執行的Javascript代碼、運行各種操作系統命令等。
建議過濾出所有以下字符:
[1] |(豎線符號) [2] &(&符號) [3];(分號) [4] $(美元符號) [5] %(百分比符號) [6] @(at 符號) [7] '(單引號) [8] "(引號) [9] \'(反斜杠轉義單引號) [10] \"(反斜杠轉義引號) [11] <>(尖括號) [12] ()(括號) [13] +(加號) [14] CR(回車符,ASCII 0x0d) [15] LF(換行,ASCII 0x0a) [16] ,(逗號) [17] \(反斜杠)
注意Rational AppScan Standard一旦開啟,將始終會報告此問題。所以此問題是需要用戶驗證。具體可參考http://www-01.ibm.com/support/docview.wss?uid=swg21472385
2. 會話未更新
解決辦法:在登錄頁面加入以下代碼
//解決安全性問題,會話未更新 request.getSession().invalidate();//清空session Cookie[] cookies = request.getCookies();//獲取cookie if(null != cookies &&cookies.length> 0){ for(Cookie cookie : cookies){ cookie.setMaxAge(0);//讓cookie過期 } }
3. 跨站點請求偽造
解決辦法:在過濾器中增加對請求響應信息來源進行判斷過濾;
//解決安全性問題:跨站點請求偽造 String referer = req.getHeader("Referer"); //REFRESH String serverName = request.getServerName(); if(null != referer&&referer.indexOf(serverName) < 0){ req.getRequestDispatcher(req.getRequestURI()).forward(req, response); }
4. 跨站點腳本編制
解決辦法:通過建立過濾器方法,增加對請求響應信息來源進行判斷過濾及對所有用戶輸入信息進行清理過濾。通過清理過濾用戶輸入所包含的危險字符,便可能防 止惡意的用戶導致應用程序執行計划外的任務,例如:啟動任意 SQL 查詢、嵌入將在客戶端執行的Javascript代碼、運行各種操作系統命令等。具體實現可參考結合1.SQL注入文件寫入 與3.跨站點請求偽造 的解決方法;
5. 已解密的登錄請求
解決辦法:
1.對用戶所輸入的密碼在頁面進行MD5加密並反饋至密碼輸入框。
2. 手動生成SSL安全訪問證書;在此不做介紹,相關方法可通過網上查找;
3. 將產品HTTP訪問方式改為SSL安全訪問方式;在Apache-Tomcat應用服務器的conf文件夾下的server.xml增加以下代碼:
<!--設置SSL(Https)安全訪問方式;訪問端口為:8443 -> <Connectorport="8443"minSpareThreads="5"maxSpareThreads="75" enableLookups="true"disableUploadTimeout="true" acceptCount="100"maxThreads="200" scheme="https" secure="true"SSLEnabled="true" ciphers="SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA" keystoreFile="keystore/server.keystore"keystorePass="123456" clientAuth="false"sslProtocol="TLS"/>
(注:keystore/server.keystore為證書存儲路徑;123456為證書密碼;)
4. 在產品WEB.XML文件中加上以下代碼:
<!--解決安全性問題:已解密登錄請求;將改為SSL安全訪問方式 --> <security-constraint> <web-resource-collection> <web-resource-name>SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
6. 啟用了不安全的 HTTP 方法
解決辦法:修改web工程中或者服務器web.xml,增加安全配置信息,禁用不必要HTTP方法
<!--解決安全性問題:啟用不安全HTTP方法 --> <security-constraint> <web-resource-collection> <url-pattern>/*</url-pattern> <http-method>PUT</http-method> <http-method>DELETE</http-method> <http-method>HEAD</http-method> <http-method>OPTIONS</http-method> <http-method>TRACE</http-method> </web-resource-collection> <auth-constraint></auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> </login-config>
7. 會話 cookie 中缺少HttpOnly屬性
解決辦法:在過濾器中增加對請求響應信息頭的設定
//解決用戶的cookie可能被盜用的問題,減少跨站腳本攻擊
resp.setHeader("Set-Cookie", "name="+newSimpleDateFormat("yyyy-MM-ddHH:mm:ss").format(new Date())+"; Secure; HttpOnly");
8. 發現 Web 應用程序源代碼泄露模式
解決辦法:針對代碼注釋中出現的部分源代碼進行清除;
9. 自動填寫未對密碼字段禁用的 HTML 屬性
解決辦法:在密碼輸入框中增加autocomplete="off" 屬性
10. 發現內部 IP 泄露模式
解決辦法:針對代碼中出現的IP地址進行清除;
11. 檢測到應用程序測試腳本
解決辦法:針對代碼中出現的測試腳本文件進行清除;腳本文件主要包括以test.php、test.asp、test.cgi、test.html 等;並對一些包含相關的敏感字符文件名稱進行修改;敏感字符包括:test、old等;
12. Unix 文件參數變更
解決辦法:通過建立過濾器方法,增加對所有用戶輸入信息中是否包含“..”(兩個點)字符串進行清理過濾。具體實現可參考結合1.SQL注入文件寫入的解決方法;
13. Windows 文件參數變更
解決辦法:通過建立過濾器方法,增加對所有用戶輸入信息中是否包含“..”(兩個點)字符串進行清理過濾。具體實現可參考結合1.SQL注入文件寫入的解決方法;
14. 鏈接注入(便於跨站請求偽造)
解決辦法:通過建立過濾器方法,增加對請求響應信息來源進行判斷過濾及對所有用戶輸入信息進行清理過濾。通過清理過濾用戶輸入所包含的危險字符,便可能防 止惡意的用戶導致應用程序執行計划外的任務,例如:啟動任意 SQL 查詢、嵌入將在客戶端執行的Javascript代碼、運行各種操作系統命令等。具體實現可參考結合1.SQL注入文件寫入 與3.跨站點請求偽造 的解決方法;
15. 通過框架釣魚
解決辦法:通過建立過濾器方法,增加對請求響應信息來源進行判斷過濾及對所有用戶輸入信息進行清理過濾。通過清理過濾用戶輸入所包含的危險字符,便可能防 止惡意的用戶導致應用程序執行計划外的任務,例如:啟動任意 SQL 查詢、嵌入將在客戶端執行的Javascript代碼、運行各種操作系統命令等。具體實現可參考結合1.SQL注入文件寫入 與3.跨站點請求偽造 的解決方法;
16. 不充分帳戶封鎖
解決辦法:對用戶登錄錯誤次數進行限制,並在一定的時間內不請允許再登錄;
17. 檢測到文件替代版本
解決辦法:針對產品中所有開頭為“Copy of”、“_”、“.”、“~”和“Old”的文件進行清理;
18. 發現電子郵件地址模式
解決辦法:針對代碼中出現的電子郵件地址進行清除;
19. HTML 注釋敏感信息泄露
解決辦法:針對代碼注釋中出現的敏感信息進行清除;敏感信息包括:注釋的源代碼、電子郵件、IP地址等;
轉載自:http://p.primeton.com/articles/53c64b6ee13823319f000048