【发布时间】: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。