【问题标题】:PHP - How to avoid usage of my scripts in web browserPHP - 如何避免在 Web 浏览器中使用我的脚本
【发布时间】:2019-04-05 21:06:38
【问题描述】:

假设我有一个服务器和一个 php 文件“addUser.php”,它接受一些参数,如“name”和“highscore”。

php 将执行 SQL 查询以将数据存储在数据库中。 (我知道输入清理以避免 SQL 注入。)

我想知道如何阻止用户拨打电话

myserver.com/addUser.php?Name="it-a-me"&Highscore=9999

在浏览器或类似设备中。我仍然希望能够从我的 android 应用程序中调用它。

我知道用户代理,但可以使用浏览器插件等轻松更改。

那么,确保这一点的最佳方法是什么?

【问题讨论】:

  • myserver.com/addUser.php?Name="it-a-me"&Highscore=9999 建议您使用 GET 请求来发送值,请尝试使用 POST。这样,无法在 URL 中操纵这些值。 POST 请求仍然可以被操纵,但要复杂得多……
  • @AdamMoffat,很高兴知道,谢谢!
  • @JustinT。谢谢,POST 听起来好多了,但是用户可以使用 REST 客户端创建自己的 POST 请求吗?
  • @KYL3R,是的,因此 “POST 请求仍然可以被操纵,但它更棘手” 声明:)... 正如 AdamMoffat 建议的那样,研究使用 CSRF如果您关心该级别的安全性,则使用令牌。
  • 修改POST并不复杂,你只需要知道如何,你可以使用POSTman并轻松更改它,你也可以使用f12(调试模式)更改任何HTML表单,你不能依赖像这样的事情要保护您的网站,您必须验证所有用户输入,无论如何。如果 John smith 可以在他的浏览器中放一些没有人会看到的东西,那又有什么关系呢?如果你给他一个适当的错误页面,他很快就会知道这也不是很有趣。我个人会考虑非对称加密之类的东西,即使你必须来回进行 AJAX。

标签: php security server


【解决方案1】:

由于您的目标是阻止您的用户在高分上作弊,因此您必须实施一个系统来信任他们对您的 PHP API 的输入。

例如,你可以看看这个https://codeburst.io/jwt-to-authenticate-servers-apis-c6e179aa8c4e

并在签名的有效负载中包含高分。

【讨论】:

  • 这无济于事,因为签名密钥必须在客户端,以便客户端可以生成签名。但是用户也可以签署任何东西。
猜你喜欢
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 2019-08-28
  • 1970-01-01
  • 2013-06-17
相关资源
最近更新 更多