将用户 ID 作为 url 参数是不是安全?

Posted

技术标签:

【中文标题】将用户 ID 作为 url 参数是不是安全?【英文标题】:Is it secure to put the user id as a url parameter?将用户 ID 作为 url 参数是否安全? 【发布时间】:2016-11-27 19:59:53 【问题描述】:

我正在开发一个社交网络,我想知道是否可以在用户的​​个人资料页面中将存储在数据库中的用户 ID 作为参数放在 url 中,还是在安全性方面是个坏主意?

我希望 url 可以收藏。我应该放其他东西而不是用户ID吗?

【问题讨论】:

【参考方案1】:

保护您的网站免受 sql 注入是安全的。 但是,如果发生违规行为,所有用户都是易受攻击的。黑客唯一需要做的就是找到用户配置文件获取他的 ID。复制sql注入的输出。转到文本编辑器。按 ctrl - f 并搜索用户 ID。

【讨论】:

但是黑客可以对任何其他数据而不是用户 ID 做同样的事情,不是吗? 你的回答缺乏很多。问题不仅在于 SQL 注入,还在于不安全的直接对象引用以及直接在 URL 中公开任何数据库 ID 所带来的操作安全问题。【参考方案2】:

我一直在使用的大多数社交网络,使用用户名作为 url 而不是 id,当然它也会影响 seo,因为你有“漂亮的 url”。

安全性实际上取决于您编写代码的方式,假设有一个页面可以编辑配置文件,如果您在代码中添加如下内容: 更新 .. 设置 .. WHERE id = $_GET['id']

毫无疑问,这很危险,您应该检查每个用户的操作,例如发布/编辑个人资料等。谁在登录,而不是当前 url 上的 id 是什么

【讨论】:

【参考方案3】:

在安全性方面,将用户 ID 放在 url 中没有问题。例如 *** 已经做到了:https://***.com/users/3477044/aliuk

重要的是验证当前经过身份验证的用户是否被允许访问此 url 并代表其执行操作。

【讨论】:

其他用户也可以查看此网址,但不能在此处进行任何更改。

以上是关于将用户 ID 作为 url 参数是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章

url中的django用户名,而不是id

将会话 ID 作为 url 参数传递的危害

使用数据库中的列 ID 作为用户 ID 是不是有任何问题

在 URL 中向用户显示 Key 值是不是存在任何安全问题?

使用自定义用户 ID 与 Mongodb ObjectId

在 SOAP Web 服务调用中将 Kerberos 票证作为参数传递