我正在开发一个社交网络应用,想知道在用户的个人资料页面中,是否可以将数据库中存储的用户ID作为URL参数。从安全角度考虑,这样做是否不太好?我希望这个URL是可书签的,那我应该使用其他内容代替用户ID吗?
在安全方面,将用户ID放入URL中并没有问题。例如,StackOverflow已经这样做了: https://stackoverflow.com/users/3477044/aliuk
重要的是要验证当前已认证的用户是否被允许访问该URL并代表其执行操作。
我使用过的大多数社交网络都使用用户名作为URL而不是ID,当然这也会影响SEO,因为你有“漂亮的URL”。
安全性真的取决于你如何编写代码,比如说有一个编辑个人资料的页面,如果你在代码中加入了类似以下的内容: UPDATE .. SET .. WHERE id = $_GET['id']
毫无疑问,这是很危险的,你应该检查每个用户的操作,比如发布/编辑个人资料等,谁登录了,而不是当前URL上的ID是什么。
如果您保护网站免受 SQL 注入攻击,则可以确保安全。但是,如果发生违规行为,则所有用户都会受到影响。黑客需要做的唯一事情就是找到用户资料并获取其 ID,然后复制 SQL 注入的输出。接着,打开文本编辑器,按下 Ctrl-F 并搜索用户 ID。