3

我正在与一家托管公司合作,使用 PHP 和 MySQL。

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

现在,我对 Web 开发有点陌生,而且我知道有很多关于网站安全的内容需要阅读。

  1. 还有哪些其他攻击通常用于使用 PHP 和 MySQL 的网站和 Web 服务器?
  2. 我如何防范这些攻击?
  3. 即使我的代码是完美的,我还需要在托管公司的 Web 服务器配置中寻找哪些可能使 Web 服务器易受攻击的内容?
4

2 回答 2

2

需要牢记的事情:

查找PDO用于数据库目的,而不是mysqlor mysqli。(PDO 是一个包装器,它简化了不同类型数据库之间的差异——但也大大简化了安全性)。

PDO 的准备好的语句既使构建查询变得容易 100 倍,使它们几乎可以防 SQL 注入,只要您始终准备语句(这对于 PDO 来说也很简单)。

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

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

在这方面:

  1. 验证你从用户那里得到的一切——从表单输入到 GET/POST 值的一切
  2. 将您写入用户页面的所有内容作为 html 转义
  3. include $_GET["page"];永远不要按原样接受用户输入,选择类等(例如:)

JavaScript——我的宝贝:

  1. 了解闭包和模块/命名空间模式。
  2. 将它们用于您编写的每个大型应用程序(尤其是任何需要收集任何用户信息等的应用程序)
  3. 明白你不能阻止用户在你的网站上运行他们想要的任何东西,就像打开开发控制台并粘贴一些东西一样容易。
  4. 了解#3,学习如何使用#1和#2来防止运行#3的用户访问用户提供给你的任何数据(或者你保留的关于用户的数据)

一般来说,将用户信息保留在 cookie 和 URL 字符串之外,并尽可能多地将其保留在 JS 闭包、POST 请求中,然后尽可能保留在用户会话、服务器端。

于 2012-07-21T06:10:29.273 回答
0

A good resource to read is OWASP, which has a massive Wiki-style site full of information about web security. It can be quite heavy going, as there's a lot there, but it's a very good resource to keep in your bookmarks.

Another site that you might find useful is PHP The Right Way, which aims to help you write PHP code more securely and using best practices. This site is still quite new, but already has some good tips.

My advice for your code: the single best thing you can do to make your code secure is to use a decent PHP framework, instead of writing raw PHP code.

All the good frameworks have libraries that will help you avoid dangerous coding practices. For example, they all have database abstraction layers that no only make database work easier, but also much safer. If you follow the guidelines for the framework you're using, you'll be protecting yourself from a lot of the worst dangers. You still need to know what to look out for, of course, but that will help a lot.

My suggestion for a framework to use would be Symphony or CakePHP, but there are loads of others out there.

Hope that helps.

于 2012-07-21T07:06:38.083 回答