如何正确确保用户不会篡改查询字符串值或操作URL值?例如,您可能在CommentController上有一个Delete Comment操作,它采用CommentID.操作URL可能看起来像/ Comments/Delete/3以删除ID为3的注释.
现在显然你不希望任何人能够删除评论3.通常在评论的所有者或管理员有权这样做.我看到这种安全性强制执行不同的方式,并想知道你们中的一些人是如何做到的.
您是否进行多个数据库调用以检索注释并检查注释的作者是否与调用删除操作的用户匹配?
您是否将CommentID和UserID向下传递给执行删除的存储过程并执行删除操作,其中UserID和CommentID等于传入的值?
加密查询字符串值是否更好?
你没有.
它是编程的基本规则,尤其是在当今时代,您永远不会相信来自用户,浏览器,客户端等的任何输入.
它也是编程的基本规则,您可能不应该尝试自己实现加密和安全性,除非您真的知道自己在做什么.即使你确实知道自己在做什么,你也只能领先于tard-crrackers一步.聪明的人仍然会嘲笑你.
执行额外查询以确保登录用户具有正确的权限集.这将使每个人的生活变得更加简单.
Enrypting和解密查询参数是一个简单的过程,并且有一些很好的例子,说明如何在StackOverflow上使用HttpModule这样做.
"你不要","你不能"或"这不容易"在这个时代根本不是可以接受的回应......