我想知道在将数据连接到主键时数据是否存在任何差异(安全性或性能或不良实践)。所以基本上可以说您有一个这样的数据库:
使用者
id | username | password
帖子
id | post | user_id
现在,我们有一个链接到用户的帖子。例如,我们有一个页面在其中删除帖子。因此,例如,当您单击删除按钮时,我们将运行这样的查询:
DELETE FROM posts where id=5;
现在,执行此操作的缺陷在于,您可以以用户身份操作
GET
值id
。我学会防止这种情况的方法是通过再次检查该帖子的用户ID是否与当前使用PHP和另一个查询登录的用户ID相同来对其进行检查。
但是我最近尝试了另一种方法,只需更改如下查询:
DELETE FROM posts where id=5 and userid=1;
如果您想让一条消息知道您是否删除了某些内容,则只需获取受影响的行数即可。我的朋友告诉我这是一种非常不好的做法,我可以看出来,但这比第一种方法差多少呢? (假设在两种情况下都将防止sql注入)。总体差异是什么?
最佳答案
您可以切换到使用不太容易猜测的GUID。阅读https://blog.codinghorror.com/primary-keys-ids-versus-guids/可提供更多信息。
关于php - 影响连接到外键的数据的方式之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43634718/