Laravel 必知安全清单:20 个要点
不论你管理小的业务还是大的业务,网站安全始终都是主要关注点。不幸的是,随着技术的进步,各式各样的黑客(例如在线攻击和发送垃圾邮件的人)都在寻找新的方式来攻击你的网站。因此,无论成本如何,你的团队中都应该勤奋并努力提前预防这些问题的出现。
你的线上站点很可能受到 XSS 攻击、SQL 注入,或是不安全的对象引用等攻击。
然而,如果你的站点基于 Laravel 框架,你可以使用 Laravel 的安全特性来保护你的站点。
我们创建了 Laravel 必知安全清单,你可以随时查看并提前解决网站的安全问题。
1. 选择正确的服务器主机
这是基本的,但许多企业主和站点管理员最终会犯错误。 如果您在共享服务器和专用服务器之间谨慎决定,将会有所帮助。 此外,您需要有一个网站备份。 同时,请确保服务器符合 SSH、SSL、FTPS 和 VPN 等安全协议。
2. 请使用 PHP 和 Laravel 最新更新版本。
专家总是建议最好使用每个平台的最新版本。这是因为来自开发人员的持续更新是为了使系统更坚固和故障安全。
3. 别忘了定期评估防火墙设置。
如果您希望您的网站进行安全优化,请确保所有必要的防火墙都已就位。有几个选项可供选择,因此强烈建议您聘请一家专业的 Laravel 网站开发公司,它可以指导您做出更好的决策。
4. 使用Laravel安全性功能。
Laravel提供了几种内置安全功能 - 例如,来自Laravel的身份验证系统。 Laravel系统实践两个认证用户信息的认证方法 - 保护器用于验证每个用户请求的用户数据。同时,厂商在数据库中恢复用户信息。
提供开发服务的开发人员必须注意建立数据库和标准,并确定控制器 - 其余的由方法负责。内置身份验证功能将自动开始与站点或应用程序同步。
5. 屏蔽SQL注入。
SQL注入是对网站和应用程序的简单攻击形式的简单形式。这些由于存储在cookie中的用户信息而发生。使用PDO参数涵盖以防止他人努力改进SQL查询。
6. 过滤和验证所有数据。
Laravel 有 Eloquent ORM,它使用 PDO 参数绑定在一定程度上限制了 SQL 注入。但是 Laravel 还提出了其他方法来构建 SQL 查询。过滤并验证所有内容!不管数据来自哪里,配置文件、GET、服务器环境、POST,都不要相信。
7. 使用强哈希函数存储密码。
请记住,您的所有密码和其他关键数据都使用可靠的散列函数(如 Bcrypt)进行散列。不要使用易受攻击的散列函数,如 SHA1 和 MD5。 Laravel 框架自带一个原生哈希工具;使用它们并利用它们的好处。
8. 使用 Laravel 的内置加密。
我们强烈建议利用 Laravel 的内置加密机制,而不是自己构建。从 PHP 7.2 开始,更多过时的加密库已被弃用,例如 Mcrypt。但是,PHP 7.2 更好地支持要好得多的 Libsodium 库。因此,如果您想使用不同的加密库,请查看 Libsodium。
9. 防止跨站请求伪造(CSRF)。
对于 Laravel 站点或应用程序上的每个活跃用户,系统都会创建一个 CSRF 令牌。 令牌的使用是为了限制外部各方产生虚假请求。 每次发出请求时,平台都会匹配保存在令牌中的请求。 如果请求与保存的令牌不匹配,则认为该请求无效,并且不执行该进程。
10. XSS 或跨站点脚本安全。
在 XSS 攻击中,破坏者会入侵您网站的 JavaScript,因此每当潜在客户访问受影响的页面时,恶意脚本都会带来最坏的影响。 因此,确保 XSS 安全性至关重要。 幸运的是,Laravel 平台具有内置的原生 Laravel 安全功能,可以保护您的站点免受 XSS 攻击。 该系统自行启动,是保护数据库的最可靠方式。
11. 养成备份网站的习惯.
不管怎么说, 都需要对网站的保护有预见性; 创建者应该定期对网站进行备份。另外,你的网站管理员应该每天抽一定的时间对网站的原始数据进行备份。 这样的话,在任何可能发生的危机情况下,你才能有机会恢复到备份点。
12. 使用 HTTPS.
你知道当你的网站运行在HTTP上时,任何类型的数据都是明文传输的吗? 这里面还包括你的密码或者其他敏感数据。轻而易举就能获取到你的明文内容。所以, 使用 HTTPS 协议部署网站更安全可靠。 SSL 证书的使用正在从HTTP转变为HTTPS协议,建议有开发能力的Laravel公司都部署该协议。
13. 使用 Laravel Purifier。
在我们看来,Laravel 安全最佳实践 之一是使用 HTML Purifier 来提高系统的安全性。 由于这是一项非常技术性的工作,我们建议您聘请一位具有这项工作专业知识的开发人员。
14. 记录所有事情。
无论您的日志记录是否失败,无论是登录工作、密码重置还是调试数据,您都必须使用一个易于使用和开发的包(如 Monolog)进行日志记录
15. 检查您的 SSL/TLS 配置。
确保您的服务器的 SSL/TLS 配置已更新并配置完善。 它没有使用过时的 TLS 版本、不安全的密码、没有弱密钥的可靠安全证书,以及通过定期扫描它的更多功能。
16. 发送所有可用的安全标头。
有各种安全标题,您可以利用以使您的网站和应用程序更加受到最低努力。这些包括X-XS-Protection,HSTS,X-Content-Type-Options,X-Frame-Options和内容安全策略。确保它们正在准确配置并在请求回复中发送。
17. 采用内容安全策略。
无论您有一个小静态网站,一个大的静态网站,一个页面还是基于Web的应用程序,就是执行内容安全策略(CSP)是保持安全问题的最佳方式。它适用于一系列标准攻击向量的减轻,例如XSS。
18. 不要忘记监控您的应用程序安全性。
监控您的应用程序安全性以可疑行为和攻击。理解当您的申请开始受到攻击时对保留它至今已晚至关重要。
每个 Laravel 开发人员必须知道的最佳 Laravel 安全软件包是什么?
Laravel-ACL
Laravel-ACL 可以保护应用程序中的控制器方法,如路由和增删改查方法,并通过基于角色的权限控制来确保身份验证过程的安全性。
此外,为了验证安全状态,此扩展包还基于权重扫描基于角色的权限。
Laravel Security
为了消除代码库的所有 XSS 漏洞,Laravel Securitys 将是你的首选。目前,源于 CodeIgniter 3 的 Laravel 5 已经在框架中使用这个扩展包来保护您的业务。
Laravel Security Component
如果您想将 Symfony 的安全核心融合进 Laravel,最佳的解决方案就是使用此扩展包。
结论
很公正的来说,Laravel 已经成为了Web开发服务 中最受欢迎的 PHP 框架之一,Laravel 框架之所以这么受欢迎,正是因为它所具备的这些功能特性。因此,鉴于 Laravel Security 有如此众多预装的安全功能,Laravel 的安全性是相当容易实现的。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
关于 LearnKu
还有就是千万 别在因为 简单用Jwt, 那个token 是容易暴露的,可以快速破解的! 而passport则不会! 要不你就要对JWT 进行二次加密!
不认可第8点。如果我用laravel做后台开发,使用go或者swoole框架做接口开发,加密字符怎么通用?
这篇文章感觉是在让我招人,作者是不是在找工作?