除了保护会话之外,通过不安全的直接对象引用来防止水平权限升级的缓解技术是什么?换句话说,我们如何在水平层面上实现访问控制,我的意思是同一级别的每个人都可以访问功能,数据等,如果我们违反权限,我觉得除了劫持会话之外唯一可行的方法是通过Insecure direct对象引用还是有其他我不知道的方式?
答案 0 :(得分:1)
来阻止不安全的直接对象参考:http://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/AccessReferenceMap.html
答案 1 :(得分:1)
除了水平或垂直方向,IDOR发生在授权检查忘记到达系统中的某个对象时。至关重要的是,所到达的对象是否敏感,例如显示发票属于系统中的用户。
因此,我建议使用randomly generated IDs or UUIDs
来避免IDOR的使用。攻击者必须找到属于另一个用户的有效随机ID值。
或者,如果听起来很难应用,则有可能。即使使用自动递增的对象ID,您也可以将哈希函数与salt配合使用,并放入诸如键值对之类的哈希映射中。然后,您将键值映射存储在会话中。
您可以使用相应ID的哈希值来代替向用户公开自动递增ID。当您从用户那里获得值时,可以通过在会话中查找键值映射来找到实际的ID值。因此,即使攻击者欺骗了生成的值,它也不会存在于地图上。基本上,这意味着IDOR将不再可利用。
要阅读有关IDOR和缓解措施的全部信息,这是我写的一篇有关它的各个方面的文章:https://medium.com/@aysebilgegunduz/everything-you-need-to-know-about-idor-insecure-direct-object-references-375f83e03a87