【问题标题】:Thinking about security of an Android web service考虑 Android Web 服务的安全性
【发布时间】:2011-09-03 09:40:54
【问题描述】:

我被要求编写一个 android 应用程序来连接到 http 服务器。 为此,我创建了一个 Web 服务并将 JSON 数据发送到服务器上的 PHP 脚本,该脚本打开所需的数据库,然后插入解码的 JSON 对象。

现在我正在考虑安全性。首先,该应用将是专有的,不在 Android Market 上,但我担心两件事:

  • 有电话不在公司的人不知何故获得了该应用程序。然后他可以操纵数据库。或者公司丢失了一部 Android 手机,恶意人员试图破坏数据库。
  • 有人在没有 Android 手机的情况下使用 PHP 脚本并手动输入 JSON 数据,例如从PC浏览器(我不知道这是否可以做到。)。

为了解决第一个可能的问题,我打算使用 Android 手机的序列号。

   TelephonyManager tm =   (TelephonyManager)activity.getSystemService(Context.TELEPHONY_SERVICE);
   String id = tManager.getDeviceId();

我将把它放在我的 JSON 对象中并将其发送到服务器,对其进行解码并检查有效 ID 号的数据库表。

这是个好主意吗?

我不知道如何处理第二个问题。任何帮助将不胜感激。

【问题讨论】:

    标签: php android web-services json


    【解决方案1】:

    实际上这两个问题是相互关联的。您需要保证,只有具有适当权限的人才能使用您的 PHP 脚本。为此,您需要制作授权系统。所有这些都需要从客户端发送一些验证数据,因此必须将其存储在手机中或由您的用户每次输入。例如,它可以是简单的登录/密码验证。您可以将此类信息以加密形式存储在手机上,但无法保证如果有人拿到手机,他将无法使用此应用程序。如果你想避免这种情况,你不能存储密码——你必须每次都询问用户。

    哦,关于你发送手机唯一ID的想法——黑客可以很容易地从手机中提取出来,然后他可以用它来手动调用你的php脚本。有一个简单的规则 - 如果您在客户端存储任何身份验证数据,技术人员总是可以提取它并使用它连接到您的系统。

    【讨论】:

    • 感谢您的回复。所以我可能应该使用存储在服务器上的密码并将 JSON 对象中的密码(预散列?)发送到 PHP,检查它是否与数据库密码...
    • 是的,这正是你应该做的。以散列形式发送密码不会增加您的应用程序安全性(因为黑客会在不知道实际密码的情况下发送捕获的散列密码),但仍然建议人们在其他地方使用它们。
    • 请不要忘记接受答案,如果他们让你前进。它有助于网站保留有价值的内容。
    猜你喜欢
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 2015-08-30
    • 1970-01-01
    • 2017-02-20
    相关资源
    最近更新 更多