使用https協議解決掉頑固不化的已解密的登錄請求


1.1 已解密登錄請求概述

在應用程序測試過程中,檢測到將未加密的登錄請求發送到服務器。由於登錄過程所用的部分輸入字段(例如:用戶名、密碼、電子郵件地址、社會保險號碼,等等)是個人敏感信息,建議通過加密連接(如 SSL)將其發送到服務器。任何以明文傳給服務器的信息都可能被竊,稍后可用來電子欺騙身份或偽裝用戶。 此外,若干隱私權法規指出,用戶憑證之類的敏感信息一律以加密方式傳給網站。

1.2 安全風險及原因分析

安全風險中,可能會竊取諸如用戶名和密碼等未經加密即發送了的用戶登錄信息

原因:諸如用戶名、密碼和信用卡號之類的敏感輸入字段未經加密即進行了傳遞

1.3 AppScan掃描建議

1. 確保所有登錄請求都以加密方式發送到服務器。
2. 請確保敏感信息,例如:

- 用戶名

- 密碼

- 社會保險號碼

- 信用卡號碼

- 駕照號碼

- 電子郵件地址

- 電話號碼

- 郵政編碼


一律以加密方式傳給服務器。

1.4 應用程序解決方案

 已解密的登錄請求,要求就是數據要加密傳輸。最簡單有效的解決方式采用SSL加密協議傳輸,在進行測試過程中也嘗試在tomcat下SSL方式配置,寫下來供參考。

tomcat在生成證書文件后,在service.xml 進行配置: 給證書加上日期年限-validity 36500 100年

  1. 安全證書生成過程:進入到cmd 進入到cd  jdk bin目錄下執行
    keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "D:\app.keystore" -validity 36500
  2.  生成證書  任意路徑都行,放到tomcat文件夾下好管理。
  3. 注意:“名字與姓氏”應該是域名(服務器地址或域名)若輸成了姓名,和真正運行的時候域名不符,會出問題 
  4. 進入到tomcat 的conf 目錄下修改servlet.xml ,找到這個配置,添加你的證書的地址以及密碼在service.xml配置SSL

    

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS"

               keystoreFile="D:\tomcat-6.0\conf\app.keystore"

keystorePass="110120"/>

Tomcat服務器: 
JDK版本過低也會帶來不安全漏洞,請升級JDK為最新版本。升級JDK風險請安按照系統升級風險酌情考慮。 
(先備份再配置,低版本的配置后有啟動不了的風險,請升級tomcat和jdk版本,JDK1.7及以上支持TLS1.2協議)

 如果服務端不支持SSLv3,只支持TLSv1、TLSv1.1和TLSv1.2,又該如何設置呢?  

Tomcat 6  使用屬性  sslProtocols="TLSv1,TLSv1.1,TLSv1.2" 示例代碼如下:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"

               clientAuth="false"  sslProtocols="TLSv1,TLSv1.1,TLSv1.2"   --去掉 sslProtocol="TLS"

               keystoreFile="D:\tomcat-6.0\conf\app.keystore"

keystorePass="110120"/>

 

Tomcat 7 and later這時需要設置另外一個屬性sslEnabledProtocols,示例代碼如下:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"

               clientAuth="false"  sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" --去掉 sslProtocol="TLS"

               keystoreFile="D:\tomcat-6.0\conf\app.keystore"

keystorePass="110120"/>

 開發人員應該能夠輕松應對SSL 3.0  SSL 2.0 Poodle漏洞

在這里我是把證書放到tomcat文件夾下。注意要把8443端口改為你自己服務器的端口,以防一直跳轉到8443端口。

 

這樣配置后雖然可以通過https訪問,但仍然還可以通過8080使用普通的http訪問,所以還必須禁止普通模式登錄。把原有的普通模式注釋掉即可。

<!--

     <Connector port="8080" protocol="HTTP/1.1"  

             connectionTimeout="20000"

              redirectPort="8443" />

      -->

還得在web.xml添加配置。在tomcat的conf下的web.xml的最后添加配置文件實現http協議自動轉化為https 協議,配置文件添加在 <welcome-file-list>   </welcome-file-list> 配置文件后面

對所有的請求都轉化為https:

<security-constraint>    

  <!-- Authorization setting for SSL -->    

        <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> 

 

只對 .jsp 的請求自動轉化為https

<security-constraint>

<!-- Authorization setting for SSL -->

<web-resource-collection >

<web-resource-name >SSL</web-resource-name>

<url-pattern>*.jsp</url-pattern>

<url-pattern>*.action</url-pattern>

</web-resource-collection>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>

 應注意,由於項目的一些組件無法通過https,因此url-pattern字段只對.jsp和.action進行了限制,如果不做特定限制,則系統默認是全部使用https傳輸。而且上述設置一旦在某個工程中出現,那么當前tomcat將全局采用這一配置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM