网络安全:从哪里开始

时间:2012-07-21 05:36:37

标签: php mysql security

我正在一个托管公司的网站上工作,用PHP和MySQL。

我熟悉SQL注入和XXS,我知道如何编码以便不会发生这些。但是,我仍计划测试网站的漏洞。

现在,我对Web开发有了新的认识,我知道有很多关于网站安全的内容。

  1. 还有哪些通常使用的攻击 使用PHP和MySQL的网站和网络服务器?
  2. 如何防范这些攻击?
  3. 即使我的代码很完美,我还需要在托管公司的网站上寻找什么 服务器配置可能会使Web服务器容易受到攻击?

2 个答案:

答案 0 :(得分:2)

要记住的事情很好:

查看PDO以获取数据库,而不是mysqlmysqli。 (PDO是一个包装器,它简化了不同类型数据库之间的差异 - 但也大大简化了安全性。)

PDO准备好的语句使构建查询变得更容易100x, AND 使它们几乎可以防止SQL注入,只要您总是准备语句(使用PDO也很容易愚蠢。

在15分钟内学习如何在其他两个mysql选项中使用PDO是非常值得的。

虽然这可能会使您免于危及数据库安全,但它并不能保护您免受可能存储在数据库中的数据的影响,以便以后提供给用户。

在这方面:

  1. 验证从用户获得的所有内容 - 从表单输入到GET / POST值的所有内容
  2. 将您写入用户页面的所有内容转义为html
  3. 从不按用户输入,选择类等等(例如:include $_GET["page"];
  4. JavaScript - 我的宝贝:

    1. 了解闭包和模块/命名空间模式。
    2. 将它们用于您编写的每个大型应用程序(尤其是任何需要收集任何用户信息的应用程序等)
    3. 了解您无法阻止用户在您的网站上运行他们想要的任何内容,就像打开开发控制台并粘贴内容一样容易。
    4. 了解#3,了解如何使用#1和#2阻止运行#3的用户访问用户提供给您的任何数据(或保留用户的数据)
    5. 通常,将用户信息保留在cookie和URL字符串之外,并尽可能多地保留在JS闭包,POST请求中,然后尽可能在服务器端的用户会话中。

答案 1 :(得分:0)

一个很好的阅读资源是OWASP,它有一个庞大的Wiki风格的网站,其中包含有关网络安全的信息。它可能会非常繁重,因为那里有很多,但它是一个非常好的资源,可以保存在你的书签中。

另一个您可能会觉得有用的网站是PHP The Right Way,旨在帮助您更安全地编写PHP代码并使用最佳实践。这个网站还很新,但已经有了一些很好的提示。

我对您的代码的建议:您可以做的唯一最好的事情就是使用一个不错的PHP框架,而不是编写原始的PHP代码。

所有优秀的框架都有可帮助您避免危险编码实践的库。例如,它们都有数据库抽象层,不仅使数据库工作更容易,而且更安全。如果您遵循您正在使用的框架的准则,您将保护自己免受许多最严重的危险。当然,你仍然需要知道要注意什么,但这会有很大的帮助。

我建议使用的框架是Symphony或CakePHP,但是还有很多其他的。

希望有所帮助。