waitman / postcheck
使用CSRF检查POST请求
Requires
- php: ^7.0
This package is not auto-updated.
Last update: 2024-09-14 18:31:35 UTC
README
PostCheck / PHP
此程序提供了一个PHP类,用于验证POST请求。
PostCheck
-
通过HTTPS发出的请求
-
使用POST方法发出的请求
-
有效的Content-Type (application/x-www-form-urlencoded 或 multipart/form-data)
-
HTTP连接类型必须是keep-alive(即,不是'close')
-
引用者必须与主机匹配
-
内容长度数据有效负载不得超过定义的限制(如果没有上传文件)
-
CSRF令牌检查
简单示例
<?php
define('MAX_POST_SIZE',4*1024); /* 4k post limit, adjust as needed. */
define('MAX_CSRF_AGE',10*60); /* 10 minutes */
define('CSRF_BYTE_SIZE',32); /* number of random bytes to generate */
define('CSRF_SECRET_FILE','/secret/csrf-secret'); /* location of secret storage */
define('CSRF_SECRET_FILE_MAX_LIFE',24*60*60); /* regenerate after 24 hours */
define('CSRF_TOKEN_FIELD_NAME','csrftoken'); /* field name used in form */
require_once('vendor/autoload.php'); //composer
use PostCheck\PostCheck;
$test = new PostCheck;
if (!$test->is_error())
{
if (!$test->check()) /* check form post */
echo $test->error();
echo $test->secrettime(); /* when secret was generated */
$test->nocache(); /* send http headers */
$csrftoken = $test->gencsrf(); /* generate CSRF token */
}
注意:请参阅src/example.php
注意
CSRF令牌可以存储在$_SESSION中,但请注意CSRF_SECRET_FILE_MAX_LIFE和MAX_CSRF_AGE。
如果尚未调用,则调用start_session()。如果在您的程序中未先检查就调用start_session(),这可能会导致NOTICE消息。
如果您更改CSRF_BYTE_SIZE,请删除CSRF_SECRET_FILE文件。
许可协议
版权(c)2016 Waitman Gobble ns@waitman.net。保留所有权利。
以源代码和二进制形式重新分发和使用上述版权声明和本段,前提是所有此类形式都重复了上述版权声明和本段,并且任何与此类分发和使用相关的文档、广告材料和其他材料均承认该软件是由Waitman Gobble开发的。未经事先书面许可,Waitman Gobble的名称不得用于推广或认可由此软件派生出的产品。本软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于对适销性和特定用途的隐含保证。
使用composer安装
编辑项目目录中的composer.json
{
"minimum-stability": "dev",
"require": {
"waitman/postcheck": "dev-master"
}
}
# composer update