Php 对androidweb服务安全性的思考

Php 对androidweb服务安全性的思考,php,android,web-services,json,Php,Android,Web Services,Json,我被要求编写一个android应用程序来连接http服务器。 为此,我创建了一个web服务,并将JSON数据发送到服务器上的PHP脚本,该脚本打开所需的数据库,然后插入解码的JSON对象 现在我在考虑安全问题。首先,该应用程序将是专有的,不在ANdroid市场上,但我担心两件事: 一个手机不在公司的人不知怎的得到了这个应用程序。然后他可以操纵数据库。或者公司丢失了一部安卓手机,一个恶意的人试图破坏数据库 有人在没有Android手机的情况下使用PHP脚本并手动输入JSON数据,例如从PC浏览器

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

现在我在考虑安全问题。首先,该应用程序将是专有的,不在ANdroid市场上,但我担心两件事:

  • 一个手机不在公司的人不知怎的得到了这个应用程序。然后他可以操纵数据库。或者公司丢失了一部安卓手机,一个恶意的人试图破坏数据库
  • 有人在没有Android手机的情况下使用PHP脚本并手动输入JSON数据,例如从PC浏览器输入(我不知道这是否可以实现)
为了解决第一个可能的问题,我打算使用ANdroid手机的串行id

   TelephonyManager tm =   (TelephonyManager)activity.getSystemService(Context.TELEPHONY_SERVICE);
   String id = tManager.getDeviceId();
我将把它放在JSON对象中,并将其发送到服务器,对其进行解码,然后对照包含有效id号的数据库表进行检查

这是个好主意吗


我不知道第二个问题该怎么办。任何帮助都将不胜感激。

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


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

谢谢您的回复。所以我可能应该使用服务器上存储的密码,将JSON对象中的密码(预哈希?)发送到PHP,对照数据库密码进行检查……是的,这正是您应该做的。以散列形式发送密码不会提高您的应用程序安全性(因为黑客会在不知道实际密码的情况下发送捕获的散列密码),但仍然建议您这样做,因为人们可能会在其他地方使用这些密码。如果他们让您前进,请不要忘记接受答案。它有助于网站保存有价值的内容。