leonardini/brontosaurus

此包已 废弃 并不再维护。未建议替代包。

网站 PHP 安全审计工具

v0.0.5 2020-07-19 12:51 UTC

README

687474703a2f2f62726f6e746f7361757275732e6c656f6e617264696e692e6465762f6c6f676f2e737667

 Brontosaurus 68747470733a2f2f7472617669732d63692e6f72672f4c6f72656e7a6f4c656f6e617264696e692f42726f6e746f7361757275732e7376673f6272616e63683d6d6173746572 68747470733a2f2f636f6465636f762e696f2f67682f4c6f72656e7a6f4c656f6e617264696e692f42726f6e746f7361757275732f6272616e63682f6d61737465722f67726170682f62616467652e737667 68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f4c6f72656e7a6f4c656f6e617264696e692f42726f6e746f7361757275732e737667 68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446f6e6174652d50617950616c2d3963662e7376673f6c6f676f3d70617970616c


Brontosaurus 是您的 PHP 网站的 安全工具。

当前功能包括

  • 表单令牌验证

目录

安装

安装 Brontosaurus 最简单的方法是使用 Composer

composer require leonardini/brontosaurus

如果您更喜欢,可以下载 最新版本 并手动将文件添加到您的项目中。请注意,这不被鼓励,因为您将无法轻松更新库。

警告:请确保在 src 文件夹内 require_once 每个 文件

入门指南

注意:此教程假设您已使用 Composer 安装了 Brontosaurus,如果您还没有,您仍然可以按照此教程操作,但某些部分会有所不同

要使用 Brontosaurus,您必须在 Composer 的 vendor 文件夹中 require_once autoload.php 文件。

require_once("vendor/autoload.php");

实际上,要使 Brontosaurus 和所有其工具正常运行,您只需做这一件事。有关使用示例,请参阅下一节关于 表单令牌 的内容

表单令牌

当您的网站有表单时,您通常只想接收来自您合法页面的提交,而不是来自其他来源,例如未经授权的第三方服务。

考虑到这个问题无法完全解决,Brontosaurus 提供了一个实用的工具,可以帮助您使表单的安全性提高一点。

该工具通过在表单页面加载时生成一个隐藏的随机令牌来实现。这个令牌会与表单数据一起发送到服务器,并检查其是否与会话中保存的令牌相同。为了支持用户打开多个浏览器标签,最后20个令牌 将保存在会话中(这个数字可以自定义,请查看配置部分)。

您需要在表单页面上添加的代码如下

// It is extremely important that a descriptive form name is provided as parameter, because tokens must be strictly linked to every form of your website
$token = \Brontosaurus\FormToken\generateToken("form_name");

// The token must be sent to the server in a 'form_token' parameter, for security only POST request are supported
echo "<input type=\"hidden\" name=\"form_token\" value=\"$token\">";
// The form name must be sent in a 'form_name' parameter, too
echo "<input type=\"hidden\" name=\"form_name\" value=\"form_name\">";

要验证令牌的有效性,您将使用以下代码

$validation = \Brontosaurus\FormToken\validateToken("form_name");

if($validation->isSuccessful()) {
    // The token comes from your form
} else {
    // The token has not passed the check
}

有关验证过程的详细信息可以通过 $validation->getCode() 获取。请查看 ValidationCode 枚举。

配置

Brontosaurus 可以通过一个 yml 文件进行配置。要加载配置文件,请使用以下命令:

\Brontosaurus\Config::loadFromFile(__DIR__."/config.yml");

您还可以卸载您的自定义配置(默认配置将被恢复)

\Brontosaurus\Config::unloadConfig();

以下是一个示例配置文件:

form_token:
    maximum_tokens: 40