資安JAVA(二):錯誤訊息管理

來源:John Melton's Weblog
標題:YEAR OF SECURITY FOR JAVA – WEEK 2 – ERROR HANDLING IN WEB.XML
作者:John Melton
內文:
What is it and why do I care?

作者在 另一篇文章 討論過這個議題,你也可以在 OWASP的 TOP 10 找到相關資訊。本篇將介紹重點。通常,網站的錯誤或例外情形管理很容易被忽略。由於涵蓋範圍廣泛,作者只介紹J2EE的WEB應用程式。

事實上,一般人對於例外情形管理的最大煩惱之一是你並沒有"確實的管理例外情形"。反而是你的程式碼或是第三方的程式碼,常讓例外情況跳出來。當例外情況發生時,此時已到程式的邊界(boundary)。通常,預設情況會將所有例外堆疊紀錄(exception stack trace)列印出來。這是個大問題,這些資訊給予攻擊者太多參考資料,針對你的系統作進一步的分析。

What should I do about it?

解決這個問題的方法很直接了當。作者的建議是最少要在 java.lang.Throwable 中提供 error handler,特定的例外情況要提供特定handler(像是 http error codes: 404, 500)。以下是一個web.xml的範例。

<error-page>
  <error-code>404</error-code>
  <location>/error.jsp</location>
</error-page>
<error-page>
  <error-code>500</error-code>
  <location>/error.jsp</location>
</error-page>
<error-page>
  <exception-type>java.lang.Throwable</exception-type>
  <location>/error.jsp</location>
</error-page>


你的網站應用程式中可能會有很多的例外情況,但是從資安的角度而言,控制例外情況和以代碼將錯誤訊息編號,才是個安全的作法。

註:error.jsp應該只提供罐頭錯誤訊息,避免攻擊者得到更多資訊。

參考資料
1.TWISC 的 資訊揭露與不適當錯誤處置
2.http://software-security.sans.org/blog/2010/08/11/security-misconfigurations-java-webxml-files
3.http://www.jtmelton.com/2010/06/02/the-owasp-top-ten-and-esapi-part-7-information-leakage-and-improper-error-handling/

———–———–
資安Java: 上一篇 || 下一篇
———–———–

留言

這個網誌中的熱門文章

資安JAVA(八):HTTP強制傳輸安全(HSTS)

以 SharpPcap 實作可收聽封包的 C# 程式

資安JAVA(四):Session Cookie HTTPOnly Flag