我有一个网站,允许用户 A 搜索和查看其他用户。当用户 A 点击用户 B 时。我将用户 B 的 id 作为 GET 变量传递。然后我在视图中使用该 id 来显示适当的数据。这是好习惯吗?我应该公开用户 ID 吗?
此外,当用户 A 在用户 B 的个人资料上时,他可以向用户 A 发送消息。如何将用户 B 的 ID 安全地传递给我的控制器?
非常感谢任何帮助。
有不止一种方法可以做到这一点。
我通常用于此类用例的一种方法是创建一个足够伪随机的唯一哈希标识符,以便当它通过 url 传递时,用户将无法随机更改其中的某些值并获得另一个用户的个人资料。
例如,假设您正在传递 ID,则 URL 将类似于:
showProfile.php?id=1256
将 1256 更改为 1257 可能会显示下一个用户。
假设您传递一个足够随机的散列字符串:
showProfile.php?id=u4n5l4534mnk43nl34n
并且此类哈希不遵循序列,因此您无法更改字符/数字以获得下一个。
它还取决于您希望在站点成员之间共享用户数据的安全程度
所以,我在想,当用户 A 点击用户 B 的个人资料时,网址会变成类似site.com/profile.php?id=24
嗯?24
是用户 B 的个人资料。如果是这样的话,那么就没有问题了。在某些时候,当您搜索用户的个人资料时,您将回显数据库中的某些内容,无论是他的 id、用户名还是姓氏。所以,id 很好,但是如果你需要专业,你甚至可以使用用户名,在 htaccess 的帮助下,它可能看起来像site.com/profile/john
因此,简而言之,您无法为每个配置文件回显某些内容,这些配置文件尚未在数据库中。
但是查看您的标签,mysql
如果您在个人资料页面上使用,您已经提到过,如下所示:
$user = $_GET['id'];
$query = mysql_query("SELECT * FROM USER WHERE id = '$user' ");
嗯……那很危险,会让您的网站/数据库处于开放状态,容易受到攻击。所以,如果你使用类似于上面的东西,你应该使用 PDO