karavasilev/cryptomanana

CryptoManana 是一个加密框架,用于提升您的项目安全性。

v1.1.2 2024-02-12 21:59 UTC

README

GitHub tag (latest SemVer) PHP from Packagist PHP from Packagist GitHub DOI
Build Status Code Coverage PHPDoc Coverage Scrutinizer Code Quality Donate
CryptoManana Framework Workflow Website Total Downloads

 CryptoManana Logo

项目描述

CryptoMañana (CryptoManana) 是一个PHP加密框架,提供面向对象解决方案以增强项目安全性。该项目遵循S.O.L.I.D/KISS/DRY原则,并实现了一些流行的软件设计模式。该软件框架提供了一个功能齐全的加密模型,包含大量的加密原语、协议和服务。它非常适合安全的哈希、加密、密钥交换、数据签名、随机数据生成等。CryptoMañana旨在使您的开发更快、更安全!

开发者: Tony Karavasilev

项目安装

# Install the package at your project via Composer
composer require karavasilev/cryptomanana

# Optionally, check if your system is well-configured
php vendor/karavasilev/cryptomanana/check.php

# Or: ./vendor/karavasilev/cryptomanana/check

项目要求

  • PHP版本:5.5,5.6,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2或8.3;
  • spl 扩展(从PHP 5.0.0开始捆绑,自PHP 5.3.0起添加到核心);
  • hash 扩展(从PHP 5.1.2开始捆绑,自PHP 7.4.0起添加到核心);
  • openssl 扩展(默认添加到PHP 5.0.0,需要OpenSSL库);
  • OpenSSL Library 通常与许多操作系统和LAMP服务器默认安装;
  • PHP的Composer依赖管理器或通过src/autoload.php手动自动加载;
  • 可选扩展:libsodiumsodiummbstringzend-opcacheapcu

项目文档

通过DOI引用项目

CryptoMañana 框架 - DOI 10.5281/zenodo.2604693 (作为一个概念)

本地运行测试(可选)

git clone --depth=1 https://github.com/TonyKaravasilev/CryptoManana.git
cd CryptoManana && composer install --profile
vendor/bin/phpunit --testdox --no-coverage
vendor/bin/phpcs

注意:不要忘记在您的php.ini配置文件中设置sys_temp_dirupload_tmp_dir的位置。

通过第三方扩展启用8位Unicode转换格式支持(可选)

  • 安装并启用mbstring PHP扩展;
  • 配置编码并启用CryptoManana使用它
// Autoload packages via Composer class autoloader
require 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';

// Configure PHP internal encoding (default is `UTF-8` for PHP >= 5.6)
ini_set('default_charset', 'UTF-8');

// Configure `mbstring` to use your favourite UTF-8 encoding
mb_regex_encoding('UTF-8');
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');

// Enable the `mbstring` support for CryptoManana components
\CryptoManana\Core\StringBuilder::useMbString(true);

// Start coding hard...

注意:框架无需扩展即可工作,并且默认情况下不启用其使用以提高性能。

PHP向后兼容性(可选)

默认情况下,CryptoManana框架为不同的旧版PHP版本提供兼容性(polyfill)。您可以通过定义一个常量来禁用兼容性检查(位于src/compatibility.php),但这没有太多理由,但您可能希望有自己的/他人的Polyfill逻辑等。全局常量必须在自动加载之前或第一个类使用(访问)之前定义,如下所示

define('CRYPTO_MANANA_COMPATIBILITY_OFF', true); // const CRYPTO_MANANA_COMPATIBILITY_OFF = 1;

注意:在大多数情况下,您不需要这样做。脚本在每个HTTP请求(或CLI执行)中只调用一次。

性能和安全提示(可选)

  • 始终将您的OpenSSL/Sodium库更新到最新版本;
  • 始终更新您的操作系统和内核;
  • 始终更新您的PHP和使用的扩展;
  • 始终更新您的Composer依赖项;
  • 按环境分离依赖项;
  • 经常进行备份;
  • 遵循最小权限原则;
  • 永远不要输出系统技术错误;
  • 永远不要暴露您的平台版本信息;
  • 永远不要相信用户输入,它是邪恶的;
  • 永远不要重复使用密钥、盐或nonce字符串;
  • 利用Zend OPcache/JIT的力量;
  • 使用Composer APCu优化;
  • 增加PHP的资源;
  • 增加realpath缓存。