2016-04-07 57 views
0

我有一个android应用程序和一个php服务器。我发送了一些请求,例如我的应用程序所要求的登录和其他请求参数;并且服务器发送回应用程序中显示的json。从android应用程序到服务器的请求安全

我的问题是如何防止其他用户通过浏览器访问网址并获得结果? 此外,大多数请求只应在用户登录时执行。这是在应用程序中处理的,但在apis中如何处理?我可以发送一个授权令牌,以便与其他请求一起发送,但通过浏览器调用登录API,然后将该登录令牌与其他apis一起发送,可以获得相同的令牌。如何处理这些情况并通过应用程序以外的方法阻止访问以获取数据? 而且在android应用程序的情况下,我是否会从应用程序发送加密的登录密码?还是应该在服务器上加密,然后存储在数据库中?

这可能是一个非常天真的问题,但我无法在SO上找到现有的问题。附:我知道PHP的Apache服务器不是最好的选择,但客户端有一个现有的PHP服务器与APIS准备好,他想在应用程序中使用相同的。

+1

从来没有这么做过,但我会做的是使该应用程序的授权令牌,并将其发送给每个请求,以查看它是否来自您的应用程序,只允许从应用程序进行访问。对于只在认证时允许请求,我会使用在成功认证时发回的认证令牌。并使用https。不要拿我的话来说,这只是我会做的。 – Maantje

回答

1

随着我在这里写一个JAVA REST API是一些建议,我可以做的经验,

1>我的问题是我怎么能防止其他用户通过浏览器访问的网址和获得的结果

ans:如果您希望API仅响应由App发送的请求,您可以使用只有应用程序和其他人不知道的唯一键签署请求。

例如:您可以生成通过附加所有你在一个特定的顺序发送类似的用户名+密码+参数1 + param2的参数字符串,然后应用SHA 256或任何散列的该字符串生成一个唯一的字符串并将此字符串作为授权标头值发送:)

在API端,因为您知道要加入的参数的oder,所以一旦您收到请求,就会使用您收到的参数重新生成字符串,并将相同的散列应用于字符串,并检查您生成的字符串是否与请求授权标头值匹配,并仅响应具有适当授权值的一个:)

工作原理:每当浏览器发出请求时,都不知道授权标头,因此您的APU不会响应。 另一方面,如果有人故意试图跟踪请求并意识到需要发送授权标头,仍然无法从API获取响应,因为他不知道用于生成值的算法或参数的顺序用过的。

使用案例: 所有的Outh API都使用相同的模式。阅读OAuth规范的清晰度(虽然他们使用ot为不同的目的,你可以用它来让你的情况:)) API的例子:Facebook,Twitter,Google,Linked In等等:)

2>也在android应用程序的情况下,我是否会从应用程序发送加密或不加密的登录密码?

答: wheteher您使用的Android应用或Web浏览器进行的请求:)如果你正在使用POST请求所有的参数将被默认加密:)所以不要对此担心:)

没关系

3>如果他们在服务器上加密,然后存储在数据库中 答: 在你的数据库中明文保存密码可导致许多后果:)所以它总是更好地保存加密密码在数据库:)就用户名而言,可以将它们保存为纯文本:)

信息的额外peice的:确保所有的API的利用安全通道的:)我的意思是确保你的API的是HTTPS :) 希望我的建议帮助:)

相关问题