如何保护GAE服务器端计算逻辑?

2023-12-10

假设我的 html 表单有 100 个字段。填写所有字段后,系统会计算一些分数并向用户显示(假设分数值从 0 到 3000)。

当用户更改任何字段中的值时,我们向他显示值范围(0-1000、1001-2000、2001-3000),没有详细分数。但是一旦按下“提交”按钮,就会显示准确的分数。

现在我需要保护逻辑 - 因此,用户不应该能够理解每个字段如何影响分数。此外,用户不应该能够使用某些程序来“玩”这些值并查看分数如何变化。

我正在考虑以下方法:

  1. 使用会话;
  2. 在服务器端保存分数的当前值;
  3. 当某个字段的值发生变化时,向服务器发送更改后的字段名称和新值的请求;
  4. 在服务器端验证上一个请求何时发送,如果时间差太小,则拒绝请求;
  5. 服务器回复新范围并保存新值;
  6. 当按下“提交”时,服务器会回复分数的服务器值(不要重新计算,按原样)。不要太频繁地回复这个问题。

还有其他(更好)的方法吗?


对此没有单一的解决方案。您可以尝试让用户很难对其进行黑客攻击,并且在不被发现的情况下进行攻击,并采取可能的强制措施。

  • 当用户显示表单时使用“启用程序”cookie(或设置会话标志),并在提交响应之前检查此特定 cookie 或标志。提供响应后清除启动器,并且不允许已提交的人提交
  • 随机化字段名称并在服务器端检查字段是否具有正确的随机名称
  • 使用cookie来检查用户是否已经提交了表单(很容易被破解)
  • 根据流行的 HTTP 库检查用户代理(并且不允许人们使用它们提交表单)
  • 监控同一 IP 是否进行大量提交 - 不精确,但可能表明存在可疑之处

这些是我首先想到的想法。其他人很可能还会有其他富有洞察力的评论。

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

如何保护GAE服务器端计算逻辑? 的相关文章

随机推荐

  • string类与其他类有何区别?

    我们可以做的 String string ourstring 但我们不能为用户定义的类创建这样的对象 UserClass uc Java 如何允许我们直接设置值java lang String只上课 java lang String是一个特
  • 如何在 IgGrid 单元格(Infragistics)中获取正则表达式?

    如何在 igGrid 更新中的 igTextEditor 上使用正则表达式 我尝试使用验证选项 但没有成功 schedulerTable igGrid columns scope schedulerColumns width 87 heig
  • 如何使用 React 删除待办事项列表中的项目

    我正在使用 React 创建一个待办事项列表应用程序 在我的应用程序中 当我单击 x 按钮删除项目并使用 console log 检查当前数组时 我可以看到该数组已正确更新为我要删除的项目从数组列表中 但 Dom 只渲染我想要删除的项目而不
  • 提高自定义无限滚动的速度

    我有一个自定义的无限滚动 运行完美 但速度非常慢 这是处理 ajax 请求的脚本 function ga infinite scroll trigger this on infinite scroll add filter woocomme
  • JFreeChart X 轴标签超出图表区域

    我有一个JFreeChart图表与DateAxis作为域 它看起来非常漂亮 但是最后一个轴标签有时会超出图表区域 这是要重现的示例代码 public class LineChart AWT extends ApplicationFrame
  • Visual basic 和 Json.net Web 请求

    基本上我想做的是制作一个程序来列出英雄联盟的游戏信息 使用 API 来提取数据 其工作原理是 您搜索用户名 它会返回链接到该帐户的整数 然后您使用该整数搜索该帐户的所有信息 EG 帐户级别 获胜 损失等 我遇到了一个我似乎无法弄清楚的问题
  • 安装tensorflow需要多少空间?

    我正在尝试跑步pip install tensorflow from a Jupyter笔记本 尝试运行它cmd给出一个更陌生的error 并且我的可用磁盘空间 目前还剩 1 2 GB 在安装过程中似乎会减少 然后我会看到 Errno 28
  • Spark - 评级文件中的相关矩阵

    我对 Scala 和 Spark 还很陌生 无法从评级文件创建相关矩阵 它类似于这个问题但我有矩阵形式的稀疏数据 我的数据如下所示
  • MySQL 进行多个连接时 tmp 表的密钥文件不正确

    我不经常来这里寻求帮助 但我对此感到非常沮丧 我希望有人以前遇到过这种情况 每当我尝试使用多个连接从表中获取记录时 我都会收到此错误 126 Incorrect key file for table tmp sql 64d 0 MYI tr
  • 模块中的 AngularFire2 应用程序初始化与动态配置数据冲突

    我遇到了一个问题 因为我的配置数据是在运行时加载的 而 AnuglarFire2 想要模块声明中的数据 我可以通过直接注入访问数据 但我不知道如何将数据获取到模块文件中的 AngularFireModule 在运行时加载数据是将配置数据获取
  • 编译SDK会影响Android函数返回的值吗?

    假设我有一个设备 A 并且我的应用程序编译了两次 第一次设置compileSDK 8 第二次设置compileSDK 22 当我现在从 Android 系统调用函数时 系统是否有可能返回两个不同的值或对象 我认为这是不可能的 因为这取决于设
  • Tank Auth 添加字段

    我一整天都在使用 Tank Auth 库 对此有一个疑问 我在注册表单中添加了两个字段 分别是名字和姓氏 我试图找出为什么它没有插入到用户个人资料页面中 使用更新后的代码 我收到此错误 遇到 PHP 错误 严重性 警告 消息 Tank au
  • 接收错误警告:mcrypt_decrypt():IV 参数必须与块大小一样长

    我收到此错误 Warning mcrypt decrypt The IV parameter must be as long as the blocksize 它来自于使用与 php 手册站点上的代码基本相同的代码加密变量 http php
  • Pandas - 将列转换为 int 并强制 NaN

    给定如下数据框 colVals 05 17 55 703 21 3 89 891 11 05 17 55 703 21 3 217 891 12 05 17 55 703 21 3 217 891 13 05 17 55 703 21 3
  • 在自定义 TreeView 中添加拖放支持

    我已经成功填充了TreeView通过创建一个TreeDataProvider并定制了图标及其可折叠属性 现在我希望能够拖放其ViewItem s 到 WebView 上 不幸的是 没有用于拖放的示例 阅读通过TreeView来源 ViewI
  • 从 C 中的终端获取所有输出

    我目前正在开发 ssh 程序 我希望能够通过网络完全控制终端 我的问题是 如果我向服务器发送命令以在终端中运行 如何获取终端打印的输出 我看到很多帖子说要使用popen 命令 但根据我的尝试 我无法更改目录并使用它执行其他命令 只能执行简单
  • Maven - NoSuchMethodError:void com.google.common.base.Preconditions.checkArgument(布尔值,java.lang.String,java.lang.Object)

    我面临 Maven 和 Java 16 的问题 问题 当我尝试用 maven 打包我的项目时mvn package 我收到此错误 ERROR Error executing Maven ERROR java lang IllegalStat
  • 警告:不能给函数组件提供引用

    我正在使用 Next js 最新版本来制作我的博客网站 不知道为什么会显示错误 当我尝试制作表单时 会显示如下错误 Warning Function components cannot be given refs Attempts to a
  • 使用 javascript 基于交互式 ggplot 创建过滤器选择

    我创建了以下 Rmarkdown 文件 以根据单击交互式 ggplot 进行选择 在 javascript 块中 我想使用从以下位置获得的字母 A 或 B 代替 A 交互式 ggplot 中的 onclick 事件 如果用户单击多边形 B
  • 如何保护GAE服务器端计算逻辑?

    假设我的 html 表单有 100 个字段 填写所有字段后 系统会计算一些分数并向用户显示 假设分数值从 0 到 3000 当用户更改任何字段中的值时 我们向他显示值范围 0 1000 1001 2000 2001 3000 没有详细分数