例如,当我从视图中的帐户列表中选择一个帐户时,URL显示的内容如下:
http://example.com/BankAccount/EditBankAccount?bankAccountId=12
是否有一种方法来隐藏主键,因为northing阻止某人编辑URL中的id并将其张贴,以获得不同的帐户。
我可以添加代码来查看当前用户是否允许查看这个帐户,但是有更好的方法吗?
发布于 2014-01-05 09:22:19
没必要把钥匙藏在网址上。例如,您查看过StackOverflow上的urls吗?到处都是PKs。否则,您将如何理解当前用户正在编辑的哪个银行帐户?
相反,您应该编写一个授权筛选器,以确保url中提供的id实际上是属于当前通过身份验证的用户的帐户。我已经说明了如何在this similar thread中实现这种授权筛选器。
发布于 2014-01-05 08:33:42
你问:
有办法隐藏主键吗?
当然有,只是不要提供。让我们回顾一下您当前的URI:
http://example.com/BankAccount/EditBankAccount?bankAccountId=12
                                               ^^^^^^^^^^^^^^^^要隐藏主键,请删除它并将其编码为事务-脚本名称的一部分,例如:
http://example.com/BankAccount/EditMyBankAccount
                                   ^^我强调了不同之处。这个新的事务-脚本不需要提供任何主键,因为它总是编辑当前用户帐户-从来没有不同的一个。
这将有助于您预防不安全的直接对象引用。
发布于 2014-01-05 09:20:22
你可以:
/EditBankAccount?p1=abc&p2=xyz)当然,第三点将使URL在会话到期后无效。
https://stackoverflow.com/questions/20930682
复制相似问题