OWASP TOP10
A1-注入
A2-跨站脚本(XSS)
A3-错误的认证和会话管理
A4-不安全的直接对象引用
A5-伪造跨站请求(CSRF) -- Cross-Site Request Forgery
A7-限制远程访问失败
A8-未验证的重定向和传递
A9-不安全的加密存储
A10-不足的传输层保护
所谓“不安全的对象直接引用”,即Insecure direct object references,意指一个已经授权的用户,通过更改访问时的一个参数,从而访问到了原本其并没有得到授权的对象。Web应用往往在生成Web页面时会用它的真实名字,且并不会对所有的目标对象访问时来检查用户权限,所以这就造成了不安全的对象直接引用的漏洞。
我们看如下的一个示例,也许这样就更容易理解什么是不安全的对象直接引用。
1. 攻击者发现他自己的参数是6065,即?acct=6065;
2. 他可以直接更改参数为6066,即?acct=6066;
3. 这样他就可以直接看到6066用户的账户信息了。
一般来说,防止不安全的直接对象引用的方法有以下两种:
1. 使用非直接的对象引用——这防止了攻击者直接访问其并未授权的对象,通过一种mapping或是其他的方法让攻击者无法直接访问。
2. 检查访问——对每一个来自于不信任的源的直接对象引用都必须包含访问控制检查,从而确信该用户对该对象拥有访问权。