Laravel 安全的最佳提示
已发表: 2021-12-10Laravel 是最流行的 PHP 框架之一。 它有许多很棒的功能,使开发 Web 应用程序变得容易。 但是,它也有一些您应该注意的安全漏洞。 这篇博文将讨论一些最佳实践,以帮助确保您的应用程序安全并确保您的客户数据不会受到损害。
附带说明一下,如果您经常使用 PHP,请查看这 10 个最佳 PHP 代码安全扫描程序!
Laravel 安全的最佳提示
我现在将讨论一些可以用来帮助保护 Laravel 应用程序的最佳实践。
保持最新状态
首先,始终确保您的软件保持最新。 这包括框架本身和您正在使用的任何第三方库。 新的安全漏洞总是会被发现,因此确保您了解正在修复哪些漏洞以及何时修复非常重要。 如果将来您的安全出现问题,它可以为您省去很多麻烦!
减少来自 CSRF 的 Laravel 漏洞
CSRF(跨站点请求伪造)发生在攻击者诱使用户对已通过身份验证的 Web 应用程序执行操作时。 目标是诱使您的用户(或自动机器人)发送操作,就好像他们是他们而不是您一样。
例如,发生这种情况的一种常见方式是使用支持图像嵌入的电子邮件或消息传递平台。 这些图像将包含使用 JavaScript 生成的隐藏表单数据,并在用户不知道发生了什么的情况下自动提交!
Laravel 认证系统
Laravel 的身份验证系统是其强项之一。 它提供了一种对用户进行身份验证和管理权限的简单方法,但它也有一些安全弱点。 Laravel 身份验证系统的主要问题之一是,默认情况下,当用户注销时,它不会使会话无效。 这可以通过在 .env 文件中将会话超时设置为 0 来轻松解决。
防止 XSS – 防止跨站脚本
这是一个漏洞,允许攻击者在您的应用程序上下文中执行脚本代码。 这可能会导致会话劫持、网络钓鱼攻击等等! XSS 当用户输入被包含在 HTML 页面中而没有先进行验证或编码时,就会发生 XSS。
防止这种情况发生的最好方法是尽可能使用 Laravel Blade 模板引擎的三重花括号语法:{{{ }}}。 由于默认情况下它已作为安全功能实现,因此您应该在任何地方使用它,而不是直接从任何路由/控制器文件中回显用户输入,因为它们可能容易受到攻击。
SQL注入
SQL 注入是一个漏洞,允许攻击者在您的应用程序上下文中执行 SQL 语句。 这可能会导致数据丢失、信息被盗等! 防止这种情况发生的最好方法是使用准备好的语句。 Laravel 通过其查询构建器提供了一种简单的方法来做到这一点。 您应该在您的应用程序中尽可能多地使用参数化查询。
过滤和验证所有数据
开发人员最常见的漏洞之一是不验证用户输入。 这可能导致诸如注入攻击之类的事情,例如跨站点脚本 (XSS)。 Laravel 提供了一种简单的方法来过滤和验证通过不同类型信息的过滤器进入应用程序的所有数据。
使会话无效
有几种方法可以确保您的 Laravel 应用程序的安全性,您可以做的最重要的事情之一就是管理会话。 应不惜一切代价保护应用程序的框架,因为其状态的任何重大变化都可能使其容易受到攻击因素的影响。
通过自动销毁和使您的会话无效,Laravel 安全开发人员确保您是安全的。
使用散列函数存储密码
当您在 Laravel 中创建一个新的用户帐户时,该框架将在存储密码之前使用 Bcrypt 对您的密码进行哈希处理。 散列函数的设计使其很难逆转,这使得它们非常适合密码,因为用户不必记住随机字符串。
检查 SSL/TLS 配置
SSL 证书对于应用程序的安全性也很重要。 如果您使用的是旧版本,最好进行更新,以便您可以在双方(浏览器-服务器)上提供安全可靠的连接。

速率限制请求
速率限制是一种简单而有效的方法,可以防止恶意用户通过请求使您的应用程序过载。 Laravel 为此提供了一个易于使用的速率限制器,您可以将它附加到任何达到每分钟命中阈值的请求。
记录一切
记录应用程序中发生的所有事情(包括错误)总是一个好主意。 这可以帮助您解决问题,并在出现问题时提供有价值的信息。 Laravel 通过其内置的日志记录功能可以轻松地记录应用程序的所有活动。
发送所有可用的安全标头
您还可以通过发送所有可用的安全标头来提高 Laravel 应用程序的安全性。 这些标头提供有关您的应用程序的信息并帮助保护它免受各种攻击。 Laravel 提供了一种通过其内置中间件轻松发送这些标头的方法。
X 框架选项
除了发送所有可用的安全标头之外,您还可以通过防止将应用程序注入其他站点来提高应用程序的安全性。 这是通过一个叫做 X-Frame 选项的东西来完成的——一个防止你的网站被放在另一个网站 iframe 中的标题。
X-XSS-保护
另一个要包含的重要安全标头是 X-XSS-Protection。 这可以防止您的应用程序受到跨站点脚本攻击,这是当今网络上最常见的一些攻击。
高铁
HSTS 标头是另一种提高应用程序安全性的好方法。 此标头告诉浏览器它们应该只通过安全连接与您的站点进行通信,这有助于防止中间人攻击。
内容安全政策
此标头告诉浏览器它们应该允许在您的站点上加载哪些类型的内容,从而有助于防止跨站点脚本和其他恶意攻击等问题。
X-Content-Type-Options
此标头可防止浏览器尝试嗅探您正在链接的文件的 MIME 类型。 这有助于防止诸如基于内容类型的攻击之类的事情,这些攻击是当今黑客和网络犯罪分子常用的方法。
制定内容安全政策
提高应用程序安全性的最佳方法之一是制定内容安全策略。 这是一组规则,告诉浏览器他们应该允许在您的网站上加载哪些类型的内容。 通过使用内容安全策略,您可以帮助保护您的应用程序免受许多不同类型的攻击。
Cookie 保护
Cookie 是黑客窃取用户信息的常用方式。 您可以通过使用 HttpOnly 和 Secure 标志来帮助保护您的 cookie,这将分别告诉浏览器不允许脚本访问它们,只允许安全连接来检索它们。
Laravel 安全包
以下是一些可用的最佳 Laravel 安全包。
Laravel-ACL
Laravel-ACL 包提供了一种保护控制器方法(如应用程序中的 CRUD 和路由)的方法,并确保您具有基于角色的访问控制的正确权限。
Laravel 安全
Laravel Security 通过其有用的功能确保您的代码库免受 XSS 攻击。
Laravel 安全组件
为了保护您的敏感资产,您需要一个包含 Laravel 和 Symfony 安全核心的包。 这个就可以了!
结论
总之,您可以使用一些最佳实践来帮助保护您的 Laravel 应用程序。 确保让您的软件保持最新状态,减少 CSRF 漏洞,防止 XSS 攻击,并尽可能使用准备好的语句。 遵循这些提示将有助于确保您客户的数据安全可靠。 谢谢阅读!
