dimns / simplecsrf
Simple CSRF-token 类,用于防止CSRF攻击。适用于表单和AJAX请求。
v2.0.0
2016-07-25 06:43 UTC
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2024-09-15 03:29:12 UTC
README
Simple CSRF-token 类,用于防止CSRF攻击
要求
- 需要PHP 5.3或更高版本。
Composer安装
- 获取 Composer。
- 使用
php composer.phar require dimns/simplecsrf或composer require dimns/simplecsrf(如果Composer已全局安装)来安装SimpleCSRF。 - 将以下内容添加到应用程序的主要PHP文件中:
require 'vendor/autoload.php';。
与表单一起使用
php
<?php require 'vendor/autoload.php'; session_start(); // Init class $csrf = new \DimNS\SimpleCSRF(); // Default session name: csrf_token // Init class with other session name $csrf = new \DimNS\SimpleCSRF('my_session_name'); // Getting a token for forms $csrf_token = $csrf->getToken(); // Checking the token if ($csrf->validateToken($_POST['_token'])) { echo 'Token correct'; } else { echo 'Invalid token'; }
html
<form action="index.php" method="post"> <input type="text" name="login"> <input type="password" name="password"> <input type="hidden" name="_token" value="<?=$csrf_token?>"> <input type="submit" value="GO!"> </form>
与AJAX一起使用
php
<?php require 'vendor/autoload.php'; session_start(); // Init class $csrf = new \DimNS\SimpleCSRF(); // Default session name: csrf_token // Init class with other session name $csrf = new \DimNS\SimpleCSRF('my_session_name'); // Generate a token for forms $csrf_token = $csrf->getToken(); // Checking the token if ($csrf->validateToken($_SERVER['HTTP_X_CSRFTOKEN'])) { // Token correct } else { // Invalid token }
html
<head> <meta name="_token" content="<?=$csrf_token?>"> </head>
javascript
// jQuery $.ajaxSetup({ beforeSend: function (xhr, settings) { if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type)) { xhr.setRequestHeader("X-CSRFToken", $('meta[name="_token"]').attr('content')); } } });