为什么肥皂是安全的?为什么不使用HTTPS呢


Why is soap secure? why not HTTPS?

这个问题源于我的一次面试。面试官问我关于我建立的一个网站的情况。我刚从学校毕业,仍然做错了很多事情,因为我不知道有什么比这更好的了没有人问。当我在白板上为面试官布置网站时,他很惊讶我没有使用web服务来访问我的数据库。他表示这并不安全但没有详细说明。他们认为从未发生过作为一种安全措施,我认为我没有这样做是错误的。我的代码只有一页。没有MVC,我的php连接和我所有的php/mysql选择、插入等都是在同一个文件上用php编写的作为我的html/javascript和其他一切(由于各种原因而错误,但目前不是主题)。我的页面受到https的保护,我认为这已经足够了。回想起来,他可能不会我知道我的数据库在本地主机上。问题中的困惑源于我缺乏知识当时和现在。

所以真正的问题(我想)应该是,我需要像Soap这样的网络服务吗作为一个介于我的数据库之间的数据库,以确保我的网站安全(即使它是本地主机)?我的假设是soap服务器将执行所有mysql语句并返回我感兴趣的值让Mysql数据库执行mysq函数和值(我认为这会增加真正的安全值)。我认为,因为我使用的是服务器端php和https,所以我会很安全(除了像mysql注入之类的事情,但我还有其他事情要考虑,比如mysql_real_eescape_string()以及其他一些东西)。

简而言之我的问题是,是否会使用soap在主页文件和实际上,localhost上的php-mysql-select语句与https相比添加了任何安全值。我不能直接把php连接,然后使用Mysql服务器执行一些Mysql函数,并使用https保护页面?那不是很安全吗?

除了我不使用MVC模型之外,你能就https与SOAP提供一些明智的建议吗?

我正在尝试用php进行一些自学。我现在用另一种语言工作,主要是写剧本。我对php非常热爱,我想学习,但不知道该从哪里可靠地学习。

感谢

您混合了保护对数据库的访问和保护对web服务的访问的概念。

无论使用何种web服务架构,都必须遵循最佳实践来保护数据库(防止SQL注入,当然不要公开凭据,通过防火墙将数据库与web服务服务器物理分离,等等)

如果您的web服务不向公众开放,则必须单独控制对web服务的访问。SOAP和REST都提供了实现这一点的可靠机制。

SOAP本身并不保护对服务器上文件的访问。它提供了一种机制来保护对web服务的访问。

更新

出于"安全"目的,在网站和数据库之间需要web服务是一个愚蠢的想法。web服务应该被视为访问功能的替代接口,而不是安全层。

事实上,除非你向公众隐藏你的网络服务,否则黑客只会攻击网络服务,而不是(或除了)网站。如果你真的把它藏在公众视野之外,你就已经投入了相当多的工程努力,却没有得到任何好处。

从体系结构的角度来看,明智的做法是将数据访问与用户界面分开(无论层是否在相同或不同的机器上运行)。在ASP.Net世界中,Repository和Unit of Work模式非常常见。我不确定PHP中常用的模式是什么。为数据库隔离创建单独的web服务当然不是这样的模式。