marcocesarato / security
AIO 安全类提供开发者项目的自动保护系统,并简化了一些安全操作,如 CSRF 或 XSS 检查,全部封装在一个简单的类中。实际上,您只需调用主方法即可获得更好的安全性,而无需进行过于复杂的操作。
Requires
- php: >=5.1.2
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
- 安装 composer
- 输入
composer require marcocesarato/security
- 转到
vendor/marcocesarato/security/
以获取源代码 - 将
.htaccess
移动到您的根目录(或尝试将其与您的.htaccess
合并) - 配置类
- 享受吧
实现
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>';