将用户ID作为URL参数安全吗?

10
我正在开发一个社交网络应用,想知道在用户的个人资料页面中,是否可以将数据库中存储的用户ID作为URL参数。从安全角度考虑,这样做是否不太好?我希望这个URL是可书签的,那我应该使用其他内容代替用户ID吗?
3个回答

24

在安全方面,将用户ID放入URL中并没有问题。例如,StackOverflow已经这样做了: https://stackoverflow.com/users/3477044/aliuk

重要的是要验证当前已认证的用户是否被允许访问该URL并代表其执行操作。


1
其他用户也可以查看此 URL,但不能在其中进行任何更改。 - Sergio Tulentsev

0

我使用过的大多数社交网络都使用用户名作为URL而不是ID,当然这也会影响SEO,因为你有“漂亮的URL”。

安全性真的取决于你如何编写代码,比如说有一个编辑个人资料的页面,如果你在代码中加入了类似以下的内容: UPDATE .. SET .. WHERE id = $_GET['id']

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


0

如果您保护网站免受 SQL 注入攻击,则可以确保安全。但是,如果发生违规行为,则所有用户都会受到影响。黑客需要做的唯一事情就是找到用户资料并获取其 ID,然后复制 SQL 注入的输出。接着,打开文本编辑器,按下 Ctrl-F 并搜索用户 ID。


但黑客可以用任何其他数据来替代用户ID,不是吗? - Aliuk
你的回答缺乏很多内容。问题不仅仅是SQL注入,还包括不安全的直接对象引用,以及直接在URL中公开任何数据库ID所带来的操作安全问题。 - David Hoelzer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接