(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 block
e.printStackTrace();
}