如何检测隐藏字段篡改?

2024-02-14

在我的网络应用程序的一种形式上,我有一个隐藏字段,出于安全原因,我需要保护它免遭篡改。我正在尝试提出一个解决方案,通过该解决方案,我可以检测隐藏字段的值是否已更改,并做出适当的反应(即使用通用的“出现问题,请重试”错误消息)。该解决方案应该足够安全,以至于暴力攻击是不可行的。我有一个我认为可行的基本解决方案,但我不是安全专家,我可能在这里完全遗漏了一些东西。

我的想法是渲染两个隐藏输入:一个名为“important_value”,包含我需要保护的值,另一个名为“important_value_hash”,包含与常量长随机字符串连接的重要值的 SHA 哈希值(即相同的字符串将每次都会用到)。提交表单后,服务器将重新计算 SHA 哈希值,并与提交的 important_value_hash 值进行比较。如果不相同,则表明 important_value 已被篡改。

我还可以将其他值与 SHA 的输入字符串(也许是用户的 IP 地址?)连接起来,但我不知道这是否真的能给我带来任何好处。

这会安全吗?任何人都知道它是如何被破坏的,以及可以/应该采取什么措施来改进它?

Thanks!


It would be better to store the hash on the server-side. It is conceivable that the attacker can change the value and generate his/her own SHA-1 hash and add the random string (they can easily figure this out from accessing the page repeatedly). If the hash is on the server-side (maybe in some sort of cache), you can recalculate the hash and check it to make sure that the value wasn't tampered with in any way.

EDIT

我读错了关于随机字符串(常量盐)的问题。但我想原来的观点仍然成立。攻击者可以建立与隐藏值相对应的哈希值列表。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测隐藏字段篡改? 的相关文章

随机推荐

  • 无法将 DTE、项目或解决方案转换为 VCProject 和 VCCodeModel

    我试图通过代码获取有关 c 程序的一些信息 我在 EnvDTE 方面取得了一些成功 现在我需要使用 VCProject 和 VCCodeModel 并且我遇到了转换问题 希望这就是全部 在工人阶级中 我有一个DTE application
  • LINQ 和分页[重复]

    这个问题在这里已经有答案了 我们需要使用 LINQ 从数据库中获取数据 我们现在需要实现分页 我想有时我们需要获取10一次记录 当我们单击 下一步 按钮时 它将获取下一条记录10来自数据库的记录 请用代码指导我 谢谢 我总是使用以下代码 p
  • Npm 请以 root/管理员身份再次尝试使用此命令

    我一直在拼命尝试使用 node js 安装模块 但总是无法使用 npm 获取包 我以管理员身份登录 并使用 powershell cmd 和 以管理员身份运行 我也遇到了注册表问题 所以我使用了 npm setregistryhttp re
  • 查找错误 ORA-00932:数据类型不一致:预期 DATE 为 NUMBER

    当我尝试运行此查询时 出现上述错误 有人可以帮我解决这个问题吗 UPDATE CCO ORDER CREATION SET Doc Date 8 9 2013 WHERE Document Number IN 3032310739 3032
  • Linux Eclipse CDT 分析器

    我在 Linux 下使用 Eclipse CDT 请问有人可以在该环境下推荐一个好的分析器吗 我也是 C 和多线程编程的新手 任何人都可以提供一些关于如何运行多线程应用程序分析的建议 例如 寻找性能瓶颈等 Thanks 我不知道这是否是最好
  • 运行hadoop时出错

    haduser user laptop usr local hadoop bin hadoop dfs copyFromLocal tmp input user haduser input 11 12 14 14 21 00 INFO ip
  • 中断并行流执行

    考虑这段代码 Thread thread new Thread gt tasks parallelStream forEach Runnable run 任务是应并行执行的 Runnable 列表 当我们启动这个线程并开始执行时 根据一些计
  • Twitter Bootstrap 默认值的 Flash 消息的自定义类和格式

    我正在将 twitter bootstrap css 集成到我的应用程序中 进展顺利 但我不知道如何为我的 Flash 消息自定义 CSS 和包装器 我希望我的 Flash 消息能够使用默认的 Bootstrap 类进行格式化 div cl
  • 在 Swift 中将 JSON 转换为 NSData,以及将 NSData 转换为 JSON

    我在转换时遇到问题JSON元素进入NSData 和NSData变量返回到JSON在斯威夫特 首先 我想提取encryptedData以下 JSON 数据的元素 transactionID 12345 encryptedData 67 51
  • 如何在laravel eloquent中从多个表中检索数据

    Model relation language php public function attributeDetail return this gt hasMany AttributeDetail class language id att
  • LINQ-to-SQL 中的多个 where 子句和 && 运算符有什么区别?

    看来我可以写一个where x a 1 x b 1 as where x a 1 where x b 1 据我了解后者变成 Where x gt x a 1 Where x gt x b 1 但这如何转化为 DB 呢 哪个在优化方面会更好
  • 如何通过Gitlab CI成功安装fbprophet?

    我正在尝试使用 Gitlab CI 将我的代码 使用 fbprophet 部署为 EC2 实例 my requirements txt file i https pypi org simple cmdstanpy 0 4 convertda
  • 架构arm64的未定义符号

    每次从 CocoaPods 导入文件时 我都会收到 Apple Mach O 链接器错误 Undefined symbols for architecture arm64 OBJC CLASS FBSession referenced fr
  • 如何更改 Material UI 自动完成字体大小?

    我正在尝试将自定义 css 应用到 Material UI Autocomplete 组件 具体来说 我想更改输入字段的字体大小 这是我现在所拥有的
  • 在 Macos High Sierra 上创建并绑定套接字

    我在 Hight Sierra 应用程序中创建套接字时遇到严重且奇怪的问题 如果我创建命令行工具 一切都好 我创建套接字 绑定套接字 但是如果我尝试创建 Cocoa 应用程序 我无法绑定我的套接字 如果我在Cocoa App中使用CFSoc
  • C++ 风格:Stroustrup 指针星号的放置

    有谁知道为什么Stroustrup的风格是指针的放置如下 具体来说 Stroustrup 就此事提供了哪些指导 int p vs int p 因为声明多个变量需要每个变量名称旁边加星号 这会导致 int p x vs int p x 在 K
  • 增加字符串值

    如何增加字符串值 例如 string RECONCILIATION COUNT if thing happens RECONCILIATION COUNT 这通常不起作用 因为不可能以与 int 值相同的方式递增字符串变量 RECONCIL
  • 棋盘游戏胜局 - 搜索算法

    我正在寻找可能有效的算法来检测在 19x19 棋盘上玩的五子棋 五连棋 游戏中的 获胜 情况 当其中一名玩家设法连续获得五颗且不超过五颗 石子 水平 对角线或垂直 时 就会出现获胜情况 我可以轻松访问以下数据 两个玩家之前的动作 石头 存储
  • 如何在选择查询(MySQL)中仅消除连续重复项而不是所有重复项?

    我有一个这样的表 01 Jul 17 100 02 Jul 17 100 03 Jul 17 300 04 Jul 17 300 05 Jul 17 500 06 Jul 17 500 07 Jul 17 300 08 Jul 17 400
  • 如何检测隐藏字段篡改?

    在我的网络应用程序的一种形式上 我有一个隐藏字段 出于安全原因 我需要保护它免遭篡改 我正在尝试提出一个解决方案 通过该解决方案 我可以检测隐藏字段的值是否已更改 并做出适当的反应 即使用通用的 出现问题 请重试 错误消息 该解决方案应该足