Php 从android应用程序到服务器的请求的安全性
我有一个android应用程序和一个php服务器。我发送一些请求,比如登录和我的应用程序要求的其他请求参数;服务器发送回应用程序中显示的json 我的问题是如何防止其他用户通过浏览器访问URL并获得结果? 此外,大多数请求只应在用户登录时执行。这在应用程序中得到了处理,但在API中如何处理?我可以发送一个auth令牌,与其他请求一起发送,但通过浏览器调用登录api,然后将该登录令牌与其他api一起发送,也可以获得同样的结果。如何处理这些情况并防止通过应用程序以外的方法访问数据? 对于android应用程序,我是否从应用程序发送加密的登录密码也很重要吗?还是应该在服务器上加密,然后存储在数据库中Php 从android应用程序到服务器的请求的安全性,php,android,server,request,httprequest,Php,Android,Server,Request,Httprequest,我有一个android应用程序和一个php服务器。我发送一些请求,比如登录和我的应用程序要求的其他请求参数;服务器发送回应用程序中显示的json 我的问题是如何防止其他用户通过浏览器访问URL并获得结果? 此外,大多数请求只应在用户登录时执行。这在应用程序中得到了处理,但在API中如何处理?我可以发送一个auth令牌,与其他请求一起发送,但通过浏览器调用登录api,然后将该登录令牌与其他api一起发送,也可以获得同样的结果。如何处理这些情况并防止通过应用程序以外的方法访问数据? 对于androi
这可能是一个非常幼稚的问题,但我在这里找不到一个现有的问题。另外,我知道php apache服务器不是最好的选择,但是客户端有一个现成的php服务器和API,他希望在应用程序中使用相同的API。
根据我编写JAVA REST API的经验,这里是我可以提出的一些建议
1> 我的问题是如何防止其他用户通过浏览器访问URL并获得结果 ans:如果您希望API只响应应用程序发送的请求,您可以使用唯一的密钥对请求进行签名,该密钥只有应用程序知道,其他人不知道 例如:您可以生成一个字符串,方法是将发送的所有参数按特定顺序追加,如用户名+密码+参数1+参数2,然后对该字符串应用SHA 256或任何哈希,以生成唯一字符串并将该字符串作为授权头值发送:) 在API端,因为您知道要连接的参数的顺序,收到请求后,使用收到的参数重新生成字符串,并对字符串应用相同的哈希,检查生成的字符串是否与请求授权标头值匹配,并仅响应一个具有正确授权值的字符串:) 工作原理:每当浏览器发出请求时,不知道授权头,该值不会出现在请求中,因此您的APU不会响应。 另一方面,如果有人故意尝试跟踪请求,并意识到需要发送授权标头,仍然无法从API获得响应,因为他不知道用于生成值的算法,也不知道使用的参数序列 用例: 所有Outh API都使用相同的模式。为了清晰起见,请阅读OAuth规范(尽管它们使用ot的目的不同,但您可以使用它来改善您的情况:) API示例:Facebook、Twitter、Google、Linked In等:) 2> 对于android应用程序,我是否从应用程序发送加密的登录密码也很重要吗 Ans: 无论您是使用android应用程序还是web浏览器来发出请求都无关紧要:)如果您使用的是POST请求,则默认情况下所有参数都将加密:)所以不要担心:) 3> 它们应该在服务器上加密,然后存储在数据库中吗 Ans: 在数据库中以明文形式保存密码可能会导致许多后果:)因此最好在数据库中保存加密密码:)就用户名而言,以明文形式保存密码是可以的:) 额外信息:确保您的所有api都使用安全通道:)我的意思是确保您的api是https:)希望我的建议能有所帮助:)根据我编写JAVA REST API的经验,以下是我能提出的一些建议 1> 我的问题是如何防止其他用户通过浏览器访问URL并获得结果 ans:如果您希望API只响应应用程序发送的请求,您可以使用唯一的密钥对请求进行签名,该密钥只有应用程序知道,其他人不知道 例如:您可以生成一个字符串,方法是将发送的所有参数按特定顺序追加,如用户名+密码+参数1+参数2,然后对该字符串应用SHA 256或任何哈希,以生成唯一字符串并将该字符串作为授权头值发送:) 在API端,因为您知道要连接的参数的顺序,收到请求后,使用收到的参数重新生成字符串,并对字符串应用相同的哈希,检查生成的字符串是否与请求授权标头值匹配,并仅响应一个具有正确授权值的字符串:) 工作原理:每当浏览器发出请求时,不知道授权头,该值不会出现在请求中,因此您的APU不会响应。 另一方面,如果有人故意尝试跟踪请求,并意识到需要发送授权标头,仍然无法从API获得响应,因为他不知道用于生成值的算法,也不知道使用的参数序列 用例: 所有Outh API都使用相同的模式。为了清晰起见,请阅读OAuth规范(尽管它们使用ot的目的不同,但您可以使用它来改善您的情况:) API示例:Facebook、Twitter、Google、Linked In等:) 2> 对于android应用程序,我是否从应用程序发送加密的登录密码也很重要吗 Ans: 无论您是使用android应用程序还是web浏览器来发出请求都无关紧要:)如果您使用的是POST请求,则默认情况下所有参数都将加密:)所以不要担心:) 3> 它们应该在服务器上加密,然后存储在数据库中吗 Ans:<