【问题标题】:Connect php with Android, security methods连接php与Android,安全方法
【发布时间】:2012-05-31 21:27:41
【问题描述】:

我正在将数据从 Android 应用程序发送到接收信息并对其进行处理的 php 脚本,我发现了一个安全问题:如果有人发现了 url(例如:mydomain.com/recievedata.php),任何人都可以向我的系统发送数据。

确保发送数据的客户端是应用程序的理想方法是什么?

谢谢!

【问题讨论】:

  • 可以在请求头中添加特殊内容吗?这仍然可以破解,但不能仅通过查看 url。
  • 什么特别的内容?我的意思是有任何规范或什么的吗?谢谢

标签: php android api


【解决方案1】:

我见过一些公司做的一个简单的方法是包含一个密钥。例如,您的 POST 数据可能有一个 secret=3CH6knCsYmvA2va8GrHk4mf3JqmUctCM 参数。那么你在receivedata.php 顶部所需要的就是

if($_POST['secret'] != '3CH6knCsYmvA2va8GrHk4mf3JqmUctCM') {
    header('HTTP/1.1 403 Forbidden');
    error_log("ERROR: wrong secret: " . $_POST['secret']);
    exit("Access denied");
}

您可以轻松地从random.org 生成随机字符串。

当然,这不是最安全的方法,而且该字符串很可能以明文形式存储在 APK 中(不要使用它来发送启动代码!),但它既简单又好,足以让大多数人远离。例如,这可能足以发送游戏的玩家分数。

【讨论】:

  • 嗨,这就是我编写代码的方式,但他们对我说,在注册和其他内容中发送 user_id 之类的数据不够安全。谢谢。
  • 知道他们还想要什么吗?他们希望用户登录吗?他们是否需要对传递的数据进行加密?这些是不同类型的问题。
【解决方案2】:

这更像是一个 PHP 问题。以下是您应该为安全做的事情;

  • 在您的应用和 PHP 之间添加一个哈希以进行同步(AKA 密钥)
  • 确保您的脚本控制每个输入数据
  • 请勿在未转义数据的情况下将数据发送到查询(SQL 注入)
  • 尝试使用 POST 而不是 GET 或 REQUEST
  • 尽可能保持函数的私密性
  • 始终解析您收到的数据(检查它是数字、字符串还是数组等)

有了这些,没有人可以在没有您的应用的情况下使用您的任何 PHP 文件。如果没有您的许可,他们将无法接收任何数据

【讨论】:

    【解决方案3】:

    唯一正确的方法是不信任您收到的数据。始终以适合来自坏人的精心制作的数据的方式处理它。

    【讨论】:

      猜你喜欢
      • 2014-07-06
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      相关资源
      最近更新 更多