(1)风险概述
当服务器端容错处理不当时,如果接收到一些畸形数据,服务器端会将一些异常调试信息返回给客户端,从而暴露很多对攻击者有用的信息。攻击者可以利用这些错误信息,制定下一步攻击方案。
(2)缺陷编码示例:
以下是在开发Java Web程序时常见的容错代码,当系统异常时直接抛出了错误信息,没有经过任何处理,很容易产生服务器端信息泄露。
try{PreparedStatement pst = conn.prepareStatement(sql);ResultSet rs = pst.executeQuery();while (rs.next()) {User u = new User();u.setId(rs.getLong("id"));u.setName(rs.getString("name"));u.setPass(rs.getString("pass"));u.setType(rs.getInt("type"));userlist.add(u);}System.out.println();if (rs != null) rs.close();if (pst != null) pst.close();if (conn != null) conn.close();} catch(SQLException e){// TODO Auto-generated catch blocke.printStackTrace();}
