標籤:
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();//清空sessionCookie[] cookies = request.getCookies();//擷取cookieif(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
解決資料標準及品質AppScan(測試)安全性問題相關方法