marcocesarato/security

AIO 安全类提供开发者项目的自动保护系统,并简化了一些安全操作,如 CSRF 或 XSS 检查,全部封装在一个简单的类中。实际上,您只需调用主方法即可获得更好的安全性,而无需进行过于复杂的操作。

0.2.8.179 2019-09-11 08:22 UTC

This package is auto-updated.

Last update: 2024-09-11 20:32:00 UTC


README

版本: 0.2.8.183 测试版

Github: https://github.com/marcocesarato/PHP-AIO-Security-Class

作者: Marco Cesarato

如果您在项目中使用了这些方法,请给予我信用 :) 感谢!

描述

这是一个包含一些有用和自动静态方法的 PHP 安全类。

该类旨在为开发者项目提供自动保护系统,并简化一些安全操作,如 CSRF 或 XSS 检查,全部封装在一个简单的类中。实际上,您只需调用主方法即可获得更好的安全性,而无需进行过于复杂的操作。

防病毒扫描器

链接仓库: https://github.com/marcocesarato/PHP-Antimalware-Scanner

说明

Composer

  1. 安装 composer
  2. 输入 composer require marcocesarato/security
  3. 转到 vendor/marcocesarato/security/ 以获取源代码
  4. .htaccess 移动到您的根目录(或尝试将其与您的 .htaccess 合并)
  5. 配置类
  6. 享受吧

实现

1.1 - 包含类

use marcocesarato\security\Security;

include 'Security.php';

1.2 - 会话存储在数据库中(可选)(仅 PDO/CPDO 实例)

$conn = new PDO(...);
Security::setDatabase($conn); // Or Security::$database = $conn;

2.0 - 只创建一个新对象以更安全(构造函数/putInSafety 过滤 $_REQUEST 和 $_GET 全局变量,添加一些有用的安全头,检查是否存在 劫持,并检查 URL 请求)

$isAPI = false; // default is FALSE (this remove some check that could block API request)
$security = new Security($isAPI);

或直接调用

$isAPI = false; // default is FALSE
Security::putInSafety($isAPI);

注意

1 您也可以只调用您需要的这些方法

2 构造函数和 putInSafety 是 相同的

3 这些方法会调用 session_start,因此请不要在之前/之后使用它

4 global $_POST 未过滤。如果您没有在设置中启用 cleanGlobals 功能

可以通过调用以下全局变量恢复所有未清理的数据

$GLOBALS['UNSAFE_SERVER'] = $_SERVER;
$GLOBALS['UNSAFE_COOKIE'] = $_COOKIE;
$GLOBALS['UNSAFE_GET'] = $_GET;
$GLOBALS['UNSAFE_POST'] = $_POST;
$GLOBALS['UNSAFE_REQUEST'] = $_REQUEST;

3 - 使用以下方法防止您的变量上的 XSS/SQL 注入

$is_html = true;        // default is TRUE
$have_quotes = true;    // default is TRUE
$escape_string = true;  // default is TRUE except if you set FALSE in class config
$var = Security::clean($_POST['var'], $is_html, $have_quotes, $escape_string);
echo $var; 

Security::cleanGlobals();

PS:如果您使用脚本标签发送 HTML,这可能会危害数据。

如果同时需要内联 JavaScript 和清理全局变量,则使用 htmlentities 可能是一个解决方案

4 - 使用 output 方法过滤您的输出(它还检查 CSRF

ob_start()
    
// ... Your code ...
    
echo Security::output(ob_get_clean());

享受吧!

选项

这些是可用的选项

PS: 您可以根据以下方式更改配置,为每个参数或直接在类文件中编辑变量:

Security::$session_name = "MYSESSID";

配置

自动启动

错误模板

// Error Template
$error_callback = null; // Set a callback on errors
$error_template = '<html><head><title>${ERROR_TITLE}</title></head><body>${ERROR_BODY}</body></html>';

可用方法

通用方法

实用方法

清理方法

输出方法

截图

XSSBlock