暴露 SQL 行的 ID 号是否存在安全风险?
例如,有一个 ID 为 12 的事件。
如果有人通过 http://example.com/events/12
访问它,或者有人向 http://example.com/events 发送 POST,是否存在安全问题/12
为了更新该记录(当然假设我允许这样做)?
最佳答案
在网络安全上下文中,向用户公开 ID 的问题通常被称为“不安全的直接对象引用”。
来自OWASP :
防止不安全的直接对象引用需要选择一种方法来保护每个用户可访问的对象(例如对象编号、文件名):
- 使用每个用户或 session 的间接对象引用。这可以防止 攻击者直接针对未经授权的资源。为了 例如,不使用资源的数据库键,而是使用下拉菜单 为当前用户授权的六种资源列表可以使用 数字 1 到 6 指示用户选择的值。这 应用程序必须将每个用户的间接引用映射回 服务器上的实际数据库 key 。 OWASP 的 ESAPI 包括两者 开发人员可以使用的顺序和随机访问引用图 消除直接对象引用。
- 检查访问权限。每次使用来自一个的直接对象引用 不受信任的来源必须包括访问控制检查以确保 用户被授权使用所请求的对象。
深度防御方法是同时执行 1 和 2。
关于security - 评估在查询字符串中暴露行身份的安全风险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8596355/