我目前正在使用asp.net MVC创建一个应用程序,我需要验证用户是否在他预先生成的内容中选择了值。
简单流程示例:
- 服务器生成一组值:{10%,20%,30%,40%,50%} - 视图显示包含为该用户生成的值的下拉列表 - 用户必须只选择一个预先生成的值
考虑到用户可以修改html并在下拉列表中放置一个随机值 - 例如80%。我如何限制/阻止这种行为?
我目前正在考虑使用MemoryCache存储允许值集并使用用户ID作为键。不知道是否是最好的解决方案。任何建议都将非常感谢。
答案 0 :(得分:1)
这是一个有趣的问题。 MemoryCache
是一个糟糕的选择。你放在那里什么都没有保证甚至可以在那里,更不用说留在任何可靠的时间。这一切都取决于服务器上发生了什么。如果某个进程需要更多内存,MemoryCache
将是第一件事。如果应用程序池回收,崩溃,服务器重新启动等,MemoryCache
中的任何内容都将消失。而且,如果您使用多个工作人员(Web场),则MemoryCache
之间不会共享Session
,从而导致数据可能可用或不可用的奇怪问题,具体取决于用户每次请求所依赖的工作人员。< / p>
MemoryCache
可能是尽可能简单地保存值的最佳位置,但您需要确保您的会话存储类似于SQL Server,Redis等。如果您使用In Proc,你会遇到与$ionic io init
相同的问题,甚至StateServer也可能是易变的,尽管它至少比In Proc更好。存储在会话中还可确保用户无法修改值。
答案 1 :(得分:0)
解决方案比我想象的要简单。我所做的基本上是:
在我的情况下,我使用Compare ValidationAttribute来检查哈希值,因此如果为他生成的值是正确的,用户只能提交表单。