(1)风险概述
    当服务器端容错处理不当时,如果接收到一些畸形数据,服务器端会将一些异常调试信息返回给客户端,从而暴露很多对攻击者有用的信息。攻击者可以利用这些错误信息,制定下一步攻击方案。
    (2)缺陷编码示例:
    以下是在开发Java Web程序时常见的容错代码,当系统异常时直接抛出了错误信息,没有经过任何处理,很容易产生服务器端信息泄露。

    1. try{
    2. PreparedStatement pst = conn.prepareStatement(sql);
    3. ResultSet rs = pst.executeQuery();
    4. while (rs.next()) {
    5. User u = new User();
    6. u.setId(rs.getLong("id"));
    7. u.setName(rs.getString("name"));
    8. u.setPass(rs.getString("pass"));
    9. u.setType(rs.getInt("type"));
    10. userlist.add(u);
    11. }
    12. System.out.println();
    13. if (rs != null) rs.close();
    14. if (pst != null) pst.close();
    15. if (conn != null) conn.close();
    16. } catch(SQLException e)
    17. {
    18. // TODO Auto-generated catch block
    19. e.printStackTrace();
    20. }