如何在避免GUID的同时阻止我的HTML被利用?

前端之家收集整理的这篇文章主要介绍了如何在避免GUID的同时阻止我的HTML被利用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近继承了ASP.NET MVC 4代码库.我注意到的一个问题是在URL中使用了一些数据库ID(int)以及html表单提交.通过URL修改和创建具有不同数字的自定义 HTML帖子,可以利用其当前状态中的代码.

现在,虽然我可以通过使用会话状态或其他身份验证检查轻松修复URL问题,但我不太确定嵌入到网站吐出的HTML中的数据库ID(即我给他们一个下拉填充).当ids回到帖子中时,我怎么能确定我把它们作为有效选项?
解决这个问题方面,什么被认为是“最佳实践”?

虽然我很欣赏我可以“引导它”我这样做是犹豫不决的,因为我发现在调试数据库时,它们很难解决问题.

我在这里有选择吗?我必须指导以防止轻松猜测ID,或者是否有某种DRY机制可用于验证ID返回站点时的使用情况?

更新:一位评论者询问了我期待的漏洞.让我们说我吐出一个HTML表单,其中包含一个可以导入“宝藏”的所有位置的下拉列表.用户拥有的位置的ID是1,2和3,这些是在HTML中提供的.但是用户检查html,用它来解决问题,并决定将选择了id为4的POST放在一起. 4不是他的位置,是别人的.

解决方法

验证根据用户可以修改的ID传递的ID.

这可能看起来很乏味,但这确实是确保用户可以访问他们试图修改内容的唯一方法.使用没有验证的GUID是默默无闻的安全性:确定猜测它们很难,但是如果有足够的资源,你可以猜测它们.

在对发布的数据执行任何其他操作之前,您可以在控制器顶部执行此操作.如果存在违规,只需抛出异常并让全局异常处理程序处理它;您不需要以漂亮的方式处理它,因为您可以安全地假设用户以不受支持的方式篡改数据.

猜你在找的HTML相关文章