信息安全开发注意事项(四)

会话管理设计漏洞

隐患:由于应用程序设计不当,攻击者窃取到密码、密钥、session tokens等信息

风险:攻击者可以利用会话管理漏洞窃取到密码、会话令牌等信息,进而冒充合法用户身份,获取敏感信息或者进行恶意操作。

http://example/<script> document.cookie=”sessionid=1234;%20domian=.example.dom”;</script>

http://example/<meta%20htp-equiv=Set-Cookie%20content=”sessionid=1234;%20domian=.example.dom”>

措施1 用户成功认证登录后,始终生成新的会话

request.getSession().invalidate(); //清空session

Cookie cookie = request.getCookies()[0];//获取cookie

cookie.setMaxAge(0);//让cookie过期

措施2 对于Cookie重要信息加密

Cookie cookie = new Cookie(“emailCookie”,email);

cookie.setSecure(true);

response.addCookie(cookie);

 

不安全的直接对象引用漏洞

隐患:应用程序没有检查用户是否具备访问系统的资源,就直接进行调用

风险:攻击者利用该漏洞可以访问未经授权的其他用户的资料,系统文件等信息。

恶意代码示例:

一网站的新闻检索功能可搜索指定日期的新闻,但其返回的URL包含了指定日期新闻页面的文件名

http://example.com/online/getnews.asp?item=20March2003.html

攻击者可以尝试不同的目录层次来获得系统文件win.ini:

http://example.com/online/getnews.asp?item=.../.../winnt/win.ini

措施1 使用间接对象引用。避免在URL或网页中直接引用内部文件名或数据库关键字,应使用自定义的映射名称来取代直接对象名,防止将重要内容的关键字和文件名泄露给用户。

http://example.com/down.jsp?filed=234

int filed =Integer.parseInt(request.getParameter(“filed”));

String filename = null;

if(filed ==234){

  filename = “example.txt”;

}

措施2 检查用户访问权限。来自不受信源所使用的所有直接对象引用都必须包含访问控制检测,才能确保用户对要求的对象有访问权限。

int cartID = Integer.parseInt(request.getParameter(“cartID”));

User user = (User)request.getSession().getAttribute(“user”);

String query = “ select * from table WHERE cartID =’”+ cartID +”’AND userID=’”+user.getID() + “’”;

安全配置漏洞

由于操作系统、应用服务器、数据库服务器、应用程序、中间件以及相关相关应用程序所使用的框架的不安全配置,造成恶意用户可以利用系统默认账户、默认配置页面(如已发现的操作系统、Web服务器、数据库服务器、中间件漏洞的默认配置页面),对应用系统进行攻击。

风险:

攻击者利用该漏洞可以获取系统敏感信息,如程序路径、配置信息等,或者通过默认账户登录系统,获取系统机密信息,甚至操作整个服务器。

措施1

自定义出错页面,统一错误页面提示。

措施2

避免使用默认路径;修改默认账户和密码;禁用预设账户。

措施3

定期进行安全加固,及时安装补丁。

 


你可能感兴趣的:(信息安全开发注意事项(四))