我计划用PHP开发RESTful Web应用程序,然后在iOS和Android应用程序中使用相同的Web服务。在Web应用程序登录时,我将通过ajax&amp ;;发送用户凭据。身份验证标头中的HTTPS。
如果用户存在,我打算检查我的PHP代码,如果没有,则返回错误代码但不会重定向到登录页面。我有点迷茫。
答案 0 :(得分:0)
https确实很安全。或者至少它是我们拥有的最好的。当然,你必须小心总是使用https,不要通过http发送一些数据,否则你可能会开辟一条攻击途径。
执行身份验证的常用方法是登录一次,然后返回临时令牌(如传统Web应用程序中的会话),这可以用于所有后续请求。这允许您随时(或可能在设定的时间之后)撤销令牌。您可以更进一步,使用随每个请求而变化的令牌,但您将进入非常复杂的领域。
您的apache服务器不需要特殊配置,但RESTful服务通常使用服务器端重定向(例如/myresource/
转到我的script.php?i=myresource
)或其他技巧来实现更好的URL。
最后一点,没有在RESTful API中重定向客户端的概念(好吧,但它有所不同)。关键是每个请求执行特定任务或失败。由客户端应用程序来处理错误(例如,再次显示登录页面)
详细了解身份验证:
不幸的是我找不到原来的文章暗示这一点,我可能有一些错误,但这种方法是我见过的最安全的方法:
如果服务器获得无效的B令牌,则身份验证失败。如果它获得了无效的A令牌但是获得了有效的B令牌,则会假定该帐户已被盗用并将用户注销(从数据库中删除令牌)。它还可以通过删除数据库中的值来随时将用户注销(类似于gmail的log-me-out-from-devices-feature)
缺点是如果请求丢失(在发出请求时丢失了Internet连接),则令牌将不同步并且用户将被注销。此外,单个登录会话同时运行多个请求也是不可能的。两者都可以通过允许客户端api在失败时自动尝试再次登录来改进。
相当复杂,非常安全。您应该进行身份验证的复杂程度取决于您需要的安全性。