能用就行?PHP不能再果奔了!8条铁律送给你

引言

哎,想要做到安全,真的很难。

大多数时候还真不知道怎么下手,而至于安全性所带来的效果,也总是模糊不清。这也难怪那么多开发者不重视安全性。

下面提供一个PHP安全最佳实践的列表,帮助大家厘清一些安全需要注意的点。

1 - 筛选并验证所有数据

无论数据来自何处,无论是配置文件、服务器环境、GET和POST,还是其他任何地方,都不要信任它。

过滤 + 验证!

可以使用高效可用的库来实现,比如zend-inputfilter。

2 - 使用参数化数据库查询

为了避免SQL注入攻击,永远不要用外部数据连接或插入SQL字符串。而是使用参数化查询和准备好的语句。

这些可以与特定的第三方库一起使用,也可以使用PDO。

3 - 设置open_basedir

open_basedir指令限制PHP可以从open_basedir目录向下访问文件系统的文件。不能访问该目录之外的任何文件或目录。

这样,如果恶意用户试图访问敏感文件,比如/etc/passwd,访问将被拒绝。

4 - 检查您的SSL / TLS配置

通过定期扫描,确保服务器的SSL/TLS配置是最新的和正确配置的,并且没有使用弱密码过时的TLS版本、没有弱密钥的有效安全证书等。

5 - 使用TLS或公钥连接到远程服务

在访问任何数据库服务器远程服务(如Redis、Beanstalkd或Memcached)时,坚持使用TLS或公钥。

这样做可以确保只允许经过身份验证的访问,并且对请求和响应进行加密,并且不会以明文传输数据。

6 - 不要在header中发送敏感信息

默认情况下,PHP将在HTTP header 中设置版本号。一些框架也是这么做的。

7 - 能写的尽量都写上日志

无论您是否记录失败的登录尝试、密码重置或调试信息,都要确保您记录的是易于使用的成熟包,比如Monolog。

8 - 要有内容安全策略

无论你是只有一个页面、静态网站、大型静态网站,还是复杂的基于web的应用程序,都要实现内容安全策略。它有助于缓解一系列常见的攻击,比如XSS。

写在最后

当应用上规模之后,这些都用的到。别说一直都在开发小应用,小数据量的系统,想要进阶,系统安全很考验开发人员的功底哦。

Happy coding :)