【发布时间】:2012-03-19 14:07:05
【问题描述】:
我正在修改一个通过 webview 使用 webapp 的 Android 应用。目前,webapp 的代码库是用 ColdFusion 编写的——所以所有的会话管理都是在 CF 中完成的。 webapp 中的某些钩子会强制 Android 应用程序执行本机功能,有时还会在 PHP 中调用外部脚本。
这些 php 脚本获取发布给它们的数据(userid、friendid 等) - 目前 php 脚本只是确保发布的数据有效,然后在数据存在且有效时处理请求。
我正在寻找方法来提高这些 php 脚本的安全性,以防止机器人/恶意用户向这些页面发布虚假数据 - 在这一点上,没有什么能阻止任何人发送正确的用户 ID/朋友 ID 并让脚本执行。
会话管理将是第一道防线,但由于 webapp 使用不同的语言,我不能使用它 - 有时 php 脚本完全位于不同的域(虽然是同一台服务器)。
我考虑的另一种方法是在注册时创建一个用户令牌以与用户关联,并将其保存在 Android 端 - 然后在请求这些 php 脚本时发送用户 ID 和令牌。并验证该用户的令牌在远程数据库中是否匹配——这将使猜测恶意用户的发布凭据变得更加困难。显然不是最好的,因为令牌存储在本地并通过网络传输,但我离题了。
问题有没有更好的方法来保护这些单独的 php 脚本不被执行,而不使用会话管理?我的象征性想法有意义吗?
注意:我可以在任何/所有请求上使用 SSL。
【问题讨论】:
-
目标是避免 DOS 攻击,还是清除虚假请求?如果它避免 DOS,那么在给定时间内允许的最大请求数方面有哪些限制(应该有)?如果要避免虚假请求,您已经有什么可以区分“真实”请求和虚假请求(登录名/密码、白名单等)?即使有会话,您仍然需要一些机制来确定好人与坏人,或者在 DOS 的情况下,知道多少太多了。