2013-02-10 69 views
1

这个问题来自我的工作面试。面试官问我一个我建立的网站。 我刚刚离开学校,仍然做了很多错误的事情,因为我不知道任何更好的和 没有人问。当我在白板上为面试官布置网站时,他很惊讶 我没有使用网络服务来访问我的数据库。他建议这不是安全的 但没有详细说明。他们认为从来没有发生过 作为安全措施,我认为我没有这样做是错误的。我的代码全是一个页面。 的MVC,我的PHP连接和我所有的PHP/MySQL的选择,插入等都是用PHP编写的同一文件 作为我的HTML/JavaScript和一切(错因各种原因,但不是此刻的话题)。 我的网页受到https保护,我认为这已经足够。也回头看看他可能不知道 我的数据库是在本地主机上。这个问题的困惑源于我当时和现在缺乏知识 。为什么肥皂是安全的?为什么不使用HTTPS?

所以真正的问题(我猜)应该是,我是否需要像Soap这样的web服务代理 作为一个在我的数据库之间以使我的站点安全(即使它是本地主机)?我的假设是 SOAP服务器会做所有的MySQL的语句,并返回我感兴趣的值。或可替代的SAOP Sever的将 获得MySQL数据库来执行mysq功能和价值(这我想补充真正的安全值)。 我以为是因为我正在使用服务器端PHP和HTTPS,我会安全 (比做事像MySQL的注入等,但我有其他事情要考虑,像mysql_real_escape_string() 和一些其他的东西)。

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

除了我没有使用MVC模型,你可以提供的HTTPS VS SOAP一些明智的建议?

我想在php中做一些自学。我现在用另一种语言工作,主要是编写脚本。 我对PHP非常热爱,我想学习,但不知道该在哪里可靠地转身。

感谢

+0

这很难找出你在这里问的问题。我试图编辑你的第一段,使其更容易阅读和理解,但我无法真正掌握你想要呈现的背景。请考虑编辑您的问题以使其更清晰,也许使用伪代码来说明您想要描述的内容。 – 2013-02-11 02:34:07

+0

谢谢,我会在不久的将来重新编辑这个。 – 2014-06-06 00:02:12

+0

@HarryFairbanks:我不是那个低调的人,但是在编辑帖子后回复这条评论。你问的东西有根本的价值。如果编辑的问题很清楚并且重点突出,我会赞扬它。 – 2014-06-06 00:03:25

回答

1

你混合保护访问数据库的概念,并保护访问您的网络服务。

您必须遵循最佳实践来保护您的数据库,无论你使用什么网络服务架构(防止SQL注入,肯定不会暴露凭证,通过物理防火墙等从Web服务的服务器分开DB )。

如果你的Web服务并不意味着提供给广大市民,必须单独控制访问Web服务。 SOAP和REST都提供了可靠的机制来实现这一点。

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

UPDATE

这是一个愚蠢的想法,要求网站和“安全”的宗旨数据库之间的网络服务。 Web服务应该被认为是访问功能的替代接口,而不是安全层。

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

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

+0

谢谢,这回答了我的问题,并阐明了困惑。 – 2014-06-09 21:26:32

相关问题