缺少访问与授权控制
概述
由于网站管理员对安全的认识不足,有些网站可能会因不适当的设计而运营。本节将介绍有关已报告的脆弱性信息的解决方法,包括访问控制和授权控制等功能缺失。
访问控制缺失
根本解决方案
- 对于需要访问控制功能的网站,应设置认证功能以要求输入密码等秘密信息。
如果需要处理网站上应保密的信息或允许仅允许用户本人更改或编辑数据,则需要实现访问控制功能。但是,有些网站仅需使用电子邮件地址即可登录以查看个人信息。这些网站被认为是脆弱的,因为使用电子邮件地址这种可能被其他人知晓的信息即可查看个人信息。请使用设计并实施需要输入密码等(通常被视为不应向第三方透露的信息)的网页应用程序。
授权控制缺失
根本解决方案
- 除了认证功能外,还需要实现授权控制处理,以确保登录用户无法冒充其他人访问。
如果需要在网站上实现访问控制功能,允许用户本人查看或更改数据等操作,并且存在多个用户,则可能需要实现授权控制(Authorization)处理来控制哪个用户可以执行哪些操作。典型的已实施访问控制功能的网页应用程序会向登录用户发放会话 ID 并进行会话管理,以便在每次访问时通过会话变量等获取用户 ID。如果是简单的网页应用程序,则可以根据用户 ID 实现数据库的搜索或更改。在这种情况下,只会操作用户的数据库条目,因此可以说授权控制已被实现。但是,某些网站可能存在将用户 ID 嵌入 URL 或 POST 参数的页面。如果实施了将从外部获得的用户 ID 作为键来操作数据库的实现,则登录用户可以伪装成其他用户进行操作,从而产生漏洞。这是由于授权控制未实施而产生的漏洞。请确保始终检查用于搜索数据库的用户 ID 是否与登录用户的 ID 匹配,或者从会话变量而非外部参数中获取用户 ID。另一个例子是具有以订单号码为键来搜索或更改数据库的功能的网页应用程序。如果订单号码作为 URL 或 POST 参数提供,则登录用户可以通过指定其他用户的订单号码来查看其他用户无法查看的订单信息等,从而产生漏洞。这也是由于授权控制未实施而产生的漏洞。请确保始终检查用于搜索数据库的订单号码是否为登录用户授权查看的号码。