网络安全:从何开始

3
我正在与托管公司合作开发一个使用PHP和MySQL的网站。
我了解SQL注入和XXS,并知道如何编写代码以避免这些问题。但是,我仍然计划测试该网站的漏洞。
对于网站安全,我还有很多需要学习。
以下是一些可能会在使用PHP和MySQL的网站和Web服务器上使用的攻击:
1. 什么是其他常见的攻击方式? 2. 如何保护网站免受这些攻击? 3. 即使我的代码完美无缺,我也应该关注托管公司的Web服务器配置中可能导致Web服务器易受攻击的因素。

1
这可能是一个太宽泛的问题,无法在此得到很好的解答。但可以查看OWASP的防范小抄,里面有很好的内容。 - Michael Petrotta
填充预言攻击,如果您在服务器上进行任何用户提供数据的解密。时间攻击。 HTTPS 的流量分析(它会泄漏页面/图像/脚本大小和加载时间等信息)。 - tc.
我既点赞又关闭投票的问题很少见。 - Madara's Ghost
不要忽略简单的逻辑错误,这些错误可能会让攻击者轻松地使用你自己的代码进入系统:http://www.codebyjeff.com/blog/2012/12/web-form-security-avoiding-common-mistakes - jmadsen
2个回答

2

需要注意的事项:

在处理数据库时,应使用PDO而不是mysqlmysqli。 (PDO是一个包装器,可以简化不同类型数据库之间的差异 - 但也大大简化了安全性)。

PDO的准备语句使构建查询变得更加容易100倍,并且只要您始终准备语句(这在PDO中非常容易),就可以使它们基本上免受SQL注入攻击。

学习如何使用PDO比其他两个mysql选项值得花费15分钟。

虽然这可能会让您的数据库免受威胁,但无法保护您存储在数据库中以供用户稍后使用的数据。

在这方面:

  1. 验证来自用户的所有内容-从表单输入到GET / POST值的所有内容
  2. 将您编写的所有内容作为html转义以显示在用户页面上
  3. 永远不要直接使用用户输入,例如选择类等(例如:include $_GET ["page"];

Javascript - 我的宝贝:

  1. 了解闭包和模块/命名空间模式。
  2. 对于您编写的每个大型应用程序都要使用它们(特别是任何需要收集任何用户信息的应用程序等)
  3. 了解您无法轻松地防止用户在您的网站上运行任何他们想要的内容,例如打开dev控制台并粘贴一些内容。
  4. 在理解#3的基础上,学习如何使用#1和#2来防止用户运行#3以访问用户提供给您的任何数据(或者您保留有关用户的任何数据)

总之,将用户信息保持在cookie和URL字符串之外,并尽可能将其保留在JS闭包、POST请求中,然后在用户会话、服务器端进行处理。


0

一个很好的资源是OWASP,它有一个庞大的维基风格网站,充满了关于Web安全的信息。由于内容很多,可能会比较吃力,但这是一个非常好的资源,可以收藏起来。

另一个你可能会发现有用的网站是PHP The Right Way,旨在帮助你更安全地编写PHP代码并使用最佳实践。这个网站还很新,但已经有一些不错的技巧了。

对于你的代码,我的建议是:为了使你的代码更加安全,最好使用一个像样的PHP框架,而不是编写原始的PHP代码。

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

我建议使用Symfony或CakePHP框架,但还有很多其他的框架可供选择。

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接