我正在修改一个通过 WebView 使用网络应用程序的 Android 应用程序。目前,webapp 的代码库是用 ColdFusion 编写的——所以所有的 session 管理都是在 CF 中完成的。 Web 应用程序中有某些钩子(Hook)会强制 Android 应用程序执行 native 功能,有时还会调用 PHP 中的外部脚本。
这些 php 脚本获取发布给它们的数据(userid、friendid 等)——目前 php 脚本只是确保发布的数据有效,然后在数据存在且有效时处理请求。
我正在寻找提高这些 php 脚本安全性的方法,以防止机器人/恶意用户向这些页面发布虚假数据——目前没有什么能阻止任何人发送正确的用户 ID/ friend ID 并让脚本执行。
session 管理将是第一道防线,但由于 webapp 使用不同的语言,我无法使用它 - 有时 php 脚本完全位于不同的域(尽管是同一台服务器)。
我考虑的另一种方法是在注册时创建一个用户 token 以与用户关联,并将其保存在 Android 端 - 然后在请求这些 php 脚本时发送用户 ID 和 token 。并验证该用户的 token 在远程数据库中是否匹配——这将使猜测恶意用户的发布凭据变得更加困难。显然不是最好的,因为 token 存储在本地并通过网络传输,但我离题了。
问题是否有更好的方法来保护这些单独的 php 脚本不被执行,而不使用 session 管理?我的代币想法有意义吗?
注意:我可以对任何/所有请求使用 SSL。
最佳答案
如果您能胜任这项任务,我确切地知道您需要什么。您的 API 需要实现 OAuth2.0。
OAuth 可以为您提供一种将信息传入和传出您的服务的安全方式,同时确保所有 secret 信息都保密并且只有正确的人才能访问该信息。它为每个用户提供了一个独特的签名。
Facebook、Google、Twitter 等使用 OAuth 为开发人员提供一种安全的方式来访问信息,同时防止每个人做他们不应该做的事情。
OAuth 支持 ColdFusion、Java、PHP、C#、dotNet、VB.net、LIST、Javascript、Perl、Python、Ruby 等。
关于php - 保护脚本免受机器人和不需要的请求发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9510121/