PHP - 安全什么是最好的方法?

时间:2008-09-25 08:34:20

标签: php security

使用PHP从外部攻击中保护内部网网站的最佳方法是什么?

6 个答案:

答案 0 :(得分:11)

这是一个令人震惊的发人深省的问题,我很惊讶你没有得到更好的答案。

摘要

你要为面向外部的应用程序做的一切,然后是一些。

思维过程

如果我正确理解你,那么你会问一个问题很少很少有开发人员在问自己。大多数公司的防守都很差,一旦攻击者进入,他就进入了。显然你想把它提升到一个水平。

那么,我们在想什么样的攻击呢? 如果我是攻击者并且我正在攻击您的Intranet应用程序,那么我必须以某种方式访问​​您的网络。这可能不像听起来那么困难 - 我可能会尝试使用鱼叉式网页钓鱼(将电子邮件定位到您组织中的个人,包含恶意软件附件或指向安装恶意软件的网站的链接)以在内部计算机上安装木马。

一旦我完成了这项工作(并控制了内部PC),我将尝试针对任何互联网应用程序尝试的所有相同攻击。

但是,这不是故事的结尾。我有更多的选择:如果我有一个用户的PC,那么我可以使用键盘记录器来收集用户名和密码,以及查看所有电子邮件中的姓名和电话号码。
有了这些,我可以直接登录您的应用程序。我甚至可以学习管理员用户名/密码。即使我没有,一个名单和电话号码列表以及对公司术语的感觉给了我一个体面的机会,让我在公司内部进行更广泛的访问。

推荐

  • 首先,在所有技术解决方案之前:以安全方式培训您的用户

保护网络应用的常见答案:

  • 使用多重身份验证
    • e.g。用户名/密码和某种伪随机数小工具。
  • 清理所有输入内容。
    • 以防止跨站点脚本和SQL注入。
  • 使用SSL(也称为HTTPS)。
    • 这是一个痛苦的设置(编辑:实际上正在改善),但它提供了更好的安全性。
  • 坚持“职责分离”和“最低特权”的原则
    • 换句话说,通过确保所有用户只拥有完成工作所需的权限(以及其他任何人的工作),您可以确保他们具有绝对最低的伤害能力。

答案 1 :(得分:9)

如果是在内部网络上,为什么甚至可以从外部访问应用程序?防火墙规则至少应该到位。

答案 2 :(得分:1)

最好的方法?禁用直接外部访问!

如果员工需要来使用它(比如外联网风格的网站),你应该让他们进入VPN。通过VPN,你有更多的身份验证选项,其中大部分是更多的安全,而不是从互联网上访问您的内部网服务器。

另一个选项,这仅在数据是公共安全的情况下才有效,即将内部网服务器安排为推送数据到另一个可从外部访问的服务器。我说推,因为你真的不希望这台服务器有权访问你的网络。让您的网络服务器完成工作。

答案 3 :(得分:1)

保护它的最佳方法是什么?请勿将其连接到网络。让您的用户通过单一控制台进入一个看守的房间,运行Mosaic。

哦,你想要它易于使用吗?

  1. 始终验证可能来自不受信任来源的每一项输入。
  2. 不要相信任何数据来源。
  3. 存储密码时,始终存储密码的加密哈希值。
  4. 存储密码时, NEVER 直接存储密码。
  5. 绝不收集或存储您实际不需要的任何数据。
  6. 永远不要让自己被诱惑添加额外的铃铛和放大器。哨子。
  7. 阅读Bruce Schneier撰写的有关安全和加密的所有内容。
  8. 如果你忘了这些简单的规则,你可以找到你的应用程序在所有报纸的头版上主演,就像雅虎邮件一样。

答案 4 :(得分:1)

如果可能的话,我会回复@Oli并支持VPN方法。但是,如果由于任何原因您需要比此更多的任意访问,则应使用SSL来保护任何身份验证。除了密码验证/ IP地址验证之外,还应该考虑将SSL与客户端证书一起使用。

答案 5 :(得分:0)

您只能允许从php应用程序本身访问内部IP。也不要忽视通常的安全性和最佳实践。输入验证和输出编码(仅限白名单),带有哈希密码的用户帐户等。