如何在PHP中构建安全可靠的服务?

2022-08-30 17:54:07

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

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

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

我的问题是,我如何实现和实现上述第1)点和第2)点?是否有任何教程,书籍章节或博客文章可以将其组合在一篇文章中进行描述?还是我需要收集散布在网络上的信息,然后尝试尽可能地将它们组合在一起?

拜托,如果你知道答案,现在我希望我不是太粗鲁,不要只是说oAuth这个或openID那个,相反,我希望对如何或指向例如博客文章解释这一点的清晰解释。毋庸置疑,我像疯子一样在网上搜索,但令我大吃一惊的是,我无法找到一个好的答案!?

问候,
史蒂夫


答案 1

有没有教程,书籍章节或博客文章在一篇单独的作品中描述了这一点?

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


答案 2

我不会发明/构建你的解决方案,而是使用众多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文档中)中进行了详细描述。


推荐