1

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

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

简而言之,我的问题是使用soap将主页文件和实际上在localhost上执行php mysql select语句添加任何安全值vs https的文件之间分开。难道我不能让 php 连接,然后使用 Mysql 服务器执行一些 mysql 功能,页面受 https 保护吗?那不安全吗?

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

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

谢谢

4

1 回答 1

1

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

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

如果您的 Web 服务不打算供公众使用,则您必须单独控制对 Web 服务的访问。SOAP 和 REST 都提供了可靠的机制来做到这一点。

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

更新

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

事实上,除非你对公众隐藏你的网络服务,否则黑客只会攻击网络服务而不是(或除了)网站。如果您确实将其隐藏在公众视野之外,那么您已经投入了相当多的工程努力以实现零收益。

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

于 2013-02-10T01:52:30.723 回答