如何在PHP中构建安全和RESTful服务?

时间:2011-04-28 09:08:58

标签: php rest restful-authentication

我正在构建一个应用系统,该系统由“云端”中的服务器部分和客户端部分组成,例如: iPhone或Android应用程序或网络浏览器。

服务器端是用PHP(LAMP)实现的,现在是一个非常简单的服务器,有许多php文件服务于每种类型的方法请求,如:getCustomers.php,addNewCustomer.php等等。此外,到目前为止,还没有使用任何安全机制,托管服务器的ISP也不提供SSL。没错,SSL不是安全选项。

现在,我想装备我的旧系统并制作它:
1)真正的RESTful服务,和 2)添加安全性,用户必须经过身份验证和授权,但明文密码当然是不可接受的。

我的问题很简单,我如何实现并实现上述第1)和第2点?是否有任何教程,书籍章节或博客文章将这些内容组合在一起?或者我是否需要收集遍布网络的信息,然后尝试尽可能地将它们结合起来?

请问,如果你知道答案,现在我希望我不是太粗鲁,不要只是说oAuth这个或openID那个,相反我会欣赏一个清楚的解释如何或指针,例如博客文章解释这个。毋庸置疑,我已经像疯子一样在网上搜索,但令我惊讶的是,我没有找到一个好的答案!?

的问候,
史蒂夫

2 个答案:

答案 0 :(得分:6)

  

是否有一篇教程,书籍章节或博客文章描述了这个问题?

我可以推荐REST in Practice - Hypermedia System Architecture作为构建HATEOAS系统的指南。它没有PHP示例,但它包含一整章关于Web安全问题,包括HTTP Basic和Digest Auth,OpenID和OAuth以及要注意的攻击媒介。

答案 1 :(得分:4)

我没有发明/构建您的解决方案,而是使用众多PHP框架中的一个用于RESTful服务。 http://www.recessframework.org/非常全面,但您几乎肯定必须将其扩展为包含身份验证。

http://phprestsql.sourceforge.net/支持开箱即用的身份验证,但依靠HTTPS来加密明文密码;在解决如何处理身份验证时,您应该能够扩展它。

Apropos身份验证:由于REST旨在尽可能使用HTTP标准,我建议使用HTTP身份验证机制 - 详见http://php.net/manual/en/features.http-auth.php(以及W3C文档)。< / p>