如何确保用户只能删除特定的logging?

当直接编写sql命令时,很容易指定要删除的logging(例如,通过指定一个ID等)。

但是在网页中,如果你有一个指定不同logging的链接列表(以embedded的id作为查询参数),你如何确保用户不会在链接中编辑id,这样他就可以删除不同的logging?

例如,说我有以下的链接:

<a href="foo.com/deleterecord/1121">delete</a> 

用户可以轻松地复制粘贴链接,并将1121更改为1123,并删除其他不应访问的其他logging。

所以我的问题是,在你的体系结构中,你如何让用户select要删除的logging(通过点击一个链接),但同时阻止用户编辑链接删除其他logging? 或者这是在数据库层处理?

减less(不删除 )让用户查看/编辑与发送链接不同的logging的风险的方法是使用两个彼此不相关的密钥。 第二个键可能是一个有意义的键或只是一个随机数。

 create table foo (pk serial, validation_key integer, data [...]); Select * from foo where pk = 1121 and validation_key = 123456789; 

更可靠的方法是在生成链接时对主键进行编码,并validation给定pk和解码值是否匹配。

 <a href="foo.com/deleterecord/1121/ABC123DEF456==">delete</a> 

正如其他人所说,真正的控制发生在服务器端。

基本上你不能阻止链接的编辑,或者更好的是,你不能阻止客户端调用一些编辑的链接。 最简单和最安全的事情是validation服务器端的用户身份和相关权限。