为什么肥皂安全?为什么不用HTTPS?

时间:2013-02-10 01:39:17

标签: php security soap

这个问题源于我的面试。面试官问我一个我建的网站。 我刚刚离开学校,但仍然做了很多错事,因为我不知道更好 没有人问。当我在白板上为我的采访者布置网站时,他感到很惊讶 我没有使用Web服务来访问我的数据库。他认为这不安全 但没有详细说明。他们以为从未发生过 对我来说这是一个安全措施,我认为我没做错。我的代码只有一页。 没有MVC,我的php连接和我所有的php / mysql选择,插入等都是用php写在同一个文件上 作为我的HTML / JavaScript和其他一切(由于各种原因错误,但目前不是主题)。 我的页面受https保护,我认为这已经足够了。也回头看看,他可能不会 我知道我的数据库在localhost上。问题的混乱源于我缺乏知识 在当时和现在。

所以真正的问题(我猜)应该是,我是否需要像Soap这样的网络服务 作为我的数据库之间,以使我的网站安全(即使它是一个本地主机)?我的假设就是这样 soap服务器将执行所有mysql语句并返回我感兴趣的值。或者SAOP Sever会 获取Mysql数据库来执行mysq函数和值(我认为这会添加真正的安全值)。  我认为,因为我使用服务器端PHP和https,我会是安全的 (除了像mysql注入之类的东西,但我有其他事情可以解释,如mysql_real_escape_string() 和其他一些东西)。

简而言之 我的问题是使用soap来分隔主页面文件和文件之间的东西 实际上在localhost上的php mysql select语句添加了任何安全值vs https。我不能只是得到PHP 连接然后使用Mysql服务器执行一些mysql函数与受https保护的页面?这不安全吗?

除了我不使用MVC模型之外,您能否就https与SOAP提供一些sage建议?

我正在尝试在php中进行一些自学。我现在正在使用另一种语言,主要是编写脚本。 我对php非常热情,我想学习,但不知道在哪里可靠转。

由于

1 个答案:

答案 0 :(得分:1)

您正在混合保护对数据库的访问权限以及保护对您的Web服务的访问的概念。

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

如果您的网络服务无法向公众开放,则必须单独控制对网络服务的访问。 SOAP和REST都提供了可靠的机制来实现这一目标。

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

<强>更新

出于“安全”目的,要求网站和数据库之间的Web服务是一个愚蠢的概念。 Web服务应该被视为访问功能的替代接口,而不是安全层。

事实上,除非您将公共网络服务隐藏起来,否则黑客只会攻击网络服务而不是网站(或除此之外)。如果你确实将它隐藏在公众视野之外,那么你已经投入了大量的工程努力来实现零利益。

从架构的角度来看,将数据访问与用户界面分开是明智的(无论层是否在相同或不同的机器上运行)。在ASP.Net世界中,Repository and Unit of Work模式非常普遍。我不确定PHP中常用的模式。仅为数据库隔离创建单独的Web服务当然不是这种模式。