Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从android应用程序到服务器的请求的安全性_Php_Android_Server_Request_Httprequest - Fatal编程技术网

Php 从android应用程序到服务器的请求的安全性

Php 从android应用程序到服务器的请求的安全性,php,android,server,request,httprequest,Php,Android,Server,Request,Httprequest,我有一个android应用程序和一个php服务器。我发送一些请求,比如登录和我的应用程序要求的其他请求参数;服务器发送回应用程序中显示的json 我的问题是如何防止其他用户通过浏览器访问URL并获得结果? 此外,大多数请求只应在用户登录时执行。这在应用程序中得到了处理,但在API中如何处理?我可以发送一个auth令牌,与其他请求一起发送,但通过浏览器调用登录api,然后将该登录令牌与其他api一起发送,也可以获得同样的结果。如何处理这些情况并防止通过应用程序以外的方法访问数据? 对于androi

我有一个android应用程序和一个php服务器。我发送一些请求,比如登录和我的应用程序要求的其他请求参数;服务器发送回应用程序中显示的json

我的问题是如何防止其他用户通过浏览器访问URL并获得结果? 此外,大多数请求只应在用户登录时执行。这在应用程序中得到了处理,但在API中如何处理?我可以发送一个auth令牌,与其他请求一起发送,但通过浏览器调用登录api,然后将该登录令牌与其他api一起发送,也可以获得同样的结果。如何处理这些情况并防止通过应用程序以外的方法访问数据? 对于android应用程序,我是否从应用程序发送加密的登录密码也很重要吗?还是应该在服务器上加密,然后存储在数据库中


这可能是一个非常幼稚的问题,但我在这里找不到一个现有的问题。另外,我知道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:<