PHP code example of mnb / mnb-secure-core
1. Go to this page and download the library: Download mnb/mnb-secure-core library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mnb / mnb-secure-core example snippets
nb\SecurityCore\Env\EnvLoader;
use Mnb\SecurityCore\Core\SecurityKernel;
EnvLoader::load(__DIR__ . '/../.env');
$config =
nb\SecurityCore\Env\EnvLoader;
use Mnb\SecurityCore\Core\SecurityKernel;
EnvLoader::load(__DIR__ . '/../.env');
$config =
use Mnb\SecurityCore\Http\MiddlewarePipeline;
use Mnb\SecurityCore\Http\Request;
use Mnb\SecurityCore\Http\Response;
$request = Request::fromGlobals($config['app']['trusted_proxies'] ?? []);
$pipeline = new MiddlewarePipeline([
$kernel->requestTrustMiddleware(),
$kernel->serverIdentityProtectionMiddleware(),
$kernel->trustedHostMiddleware(),
$kernel->httpsMiddleware(),
$kernel->corsMiddleware(),
$kernel->securityHeadersMiddleware(),
$kernel->inputValidationMiddleware(),
$kernel->rateLimitMiddleware('api', 'api.profile'),
$kernel->authenticationMiddleware('api_bearer'),
$kernel->authorizationMiddleware('students.read'),
$kernel->autoAuditMiddleware(),
]);
$response = $pipeline->handle($request, function (Request $request): Response {
return Response::json(['status' => true]);
});
$response->send();
$response = $kernel->secureRequestReceiver('api_authenticated')->handle(
$request,
fn (Request $request) => Response::json([
'status' => true,
'request_id' => $request->attribute('request_id'),
])
);
use Mnb\SecurityCore\Auth\OpaqueTokenService;
$tokens = new OpaqueTokenService($kernel->tokenStore());
$issued = $tokens->issue('user-1001', ['api:read'], ttlSeconds: 3600);
$plainToken = $request->bearerToken();
$record = $plainToken
? $tokens->validate($plainToken, $request->ip(), (string)$request->header('user-agent', ''))
: null;
if (!$record || !in_array('api:read', $record['scopes'] ?? [], true)) {
return Response::json(['status' => false, 'message' => 'Unauthorized'], 401);
}
$result = $kernel->rateLimiter()->attempt('api:' . $request->ip(), 120, 60);
if (!$result->allowed) {
return Response::json(['status' => false, 'message' => 'Too many requests'], 429, [
'Retry-After' => (string)$result->retryAfter,
]);
}
use Mnb\SecurityCore\Auth\Csrf;
$csrf = new Csrf('_csrf_token');
$token = $csrf->token();
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !$csrf->verify($_POST['_csrf'] ?? '')) {
return Response::text('Invalid CSRF token', 419);
}
use Mnb\SecurityCore\Authz\TenantContext;
use Mnb\SecurityCore\Authz\PermissionGuard;
$context = new TenantContext(
tenantId: 'school-1',
userId: 'user-1001',
roles: ['admin'],
permissions: ['student.view', 'student.update']
);
(new PermissionGuard())->
$protected = $kernel->dataProtectionRegistry()->protectForStorage('students', [
'name' => 'Ravi',
'email' => '[email protected] ',
'parent_phone' => '9876543210',
]);
$safeResponse = $kernel->dataProtectionRegistry()->protectForResponse('students', $protected, $request);
$logSafe = $kernel->dataProtectionRegistry()->protectForLog('students', $protected);
use Mnb\SecurityCore\Database\TableSecurityPolicy;
$policy = new TableSecurityPolicy(
table: 'students',
resourceType: 'student',
selectableColumns: ['id', 'school_id', 'name', 'class_id', 'status'],
insertableColumns: ['name', 'class_id', 'status'],
updatableColumns: ['name', 'class_id', 'status'],
searchableColumns: ['name'],
orderableColumns: ['id', 'name', 'created_at']
);
$rows = $kernel->secureDatabase()->search($context, $policy, 'Ravi', [
'status' => ['eq' => 'active'],
'class_id' => ['in' => [1, 2, 3]],
'created_at' => ['between' => ['2026-01-01', '2026-06-30']],
], 'created_at', 'DESC', 50, 0);
$record = $kernel->secureFileManager(profile: 'documents')->storeFromPath(
$_FILES['document']['tmp_name'],
$_FILES['document']['name'],
'student-documents',
['user_id' => 501],
['school_id' => 10, 'data_class' => 'sensitive']
);
$response = $kernel->protectedDownloadManager()->download(
$request,
$record,
'student_document.download'
);
$result = $kernel->safeProcessRunner()->run('clamav_scan', [$uploadedFilePath]);
$response = $kernel->outboundHttpClient()->postJson($webhookUrl, ['event' => 'security.alert']);
$handler = $kernel->safeErrorHandler();
$handler->register();
$safeData = $kernel->safeViewData([
'name' => $request->input('name'),
]);
echo $kernel->safeTemplateRenderer()->render('Hello {{ name }}', $safeData);
$job = $kernel->jobDispatcher()->dispatch(
name: 'file_scan',
payload: ['file_id' => $fileId],
queue: 'files',
idempotencyKey: 'file_scan:' . $fileId
);
return $kernel->asyncResponseFactory()->accepted($job);
$kernel->tokenRevocationService()->revoke('token-jti', 'logout');
$kernel->forcedLogoutService()->logoutUser('user-1001', 'password_changed');
text
my-php-app/
├── public/
│ └── index.php
├── app/
├── config/
│ └── security.php
├── storage/
│ ├── private/
│ ├── quarantine/
│ ├── cache/
│ ├── logs/
│ ├── audit/
│ ├── backups/
│ ├── queue/
│ └── tokens/
└── libraries/
└── mnb-secure-core/
bash
php vendor/mnb/mnb-secure-core/bin/mnb-secure key:generate
php vendor/mnb/mnb-secure-core/bin/mnb-secure config:validate
php vendor/mnb/mnb-secure-core/bin/mnb-secure doctor
bash
php bin/mnb-secure key:generate
php bin/mnb-secure config:validate
php bin/mnb-secure doctor
php bin/mnb-secure matrix:export
bash
php bin/mnb-secure vulnerabilities:matrix
php bin/mnb-secure vulnerabilities:report
php bin/mnb-secure vulnerabilities:check sql_injection
php bin/mnb-secure vulnerabilities:check ssrf
php bin/mnb-secure vulnerabilities:check refresh_token_replay
php bin/mnb-secure vulnerabilities:owasp
php bin/mnb-secure vulnerabilities:export
bash
php bin/mnb-secure db:health
php bin/mnb-secure db:check-connection
php bin/mnb-secure db:policy
php bin/mnb-secure db:query-limits
php bin/mnb-secure db:schema-plan add_column students admission_number 'VARCHAR(100)'
php bin/mnb-secure db:privileges
bash
php bin/mnb-secure runtime:list-commands
php bin/mnb-secure runtime:check-command clamav_scan /tmp/example.txt
php bin/mnb-secure outbound:policy
php bin/mnb-secure outbound:check-url https://example.com
bash
php bin/mnb-secure pentest:run-checklist production_release
php bin/mnb-secure pentest:verify PT-INJ-001
php bin/mnb-secure pentest:evidence
php bin/mnb-secure pentest:coverage production_release
php bin/mnb-secure pentest:remediation-plan
php bin/mnb-secure pentest:retest
php bin/mnb-secure security:release-gate production_release
bash
php bin/mnb-secure errors:policy
php bin/mnb-secure errors:catalog
php bin/mnb-secure errors:simulate internal
php bin/mnb-secure errors:simulate validation
php bin/mnb-secure errors:simulate security
php bin/mnb-secure errors:fingerprint
php bin/mnb-secure errors:check-production
bash
php bin/mnb-secure memory:policy
php bin/mnb-secure memory:profile database_export
php bin/mnb-secure memory:simulate-allocation 10485760 request
php bin/mnb-secure memory:stream-plan 52428800 read
php bin/mnb-secure memory:payload-check
php bin/mnb-secure memory:worker-check
php bin/mnb-secure resources:check
php bin/mnb-secure resources:cleanup-plan
bash
php bin/mnb-secure throughput:policy
php bin/mnb-secure throughput:profile api_request
php bin/mnb-secure throughput:budget api_request 1200 1
php bin/mnb-secure throughput:concurrency api_request
php bin/mnb-secure throughput:throttle api_request 1800 55
php bin/mnb-secure throughput:queue 1200 10 250
php bin/mnb-secure throughput:slo
php bin/mnb-secure throughput:capacity-risk
php bin/mnb-secure throughput:simulate api_request 100 750
php bin/mnb-secure performance:release-gate
bash
php bin/mnb-secure origin:policy
php bin/mnb-secure origin:check
php bin/mnb-secure origin:exposure-report
php bin/mnb-secure origin:fingerprint
php bin/mnb-secure origin:firewall-plan
php bin/mnb-secure origin:proxy-profile cloudflare
php bin/mnb-secure origin:proxy-allowlist
php bin/mnb-secure origin:leak-scan
php bin/mnb-secure origin:production-gate
bash
php bin/mnb-secure queue:policy
php bin/mnb-secure queue:dispatch test_job
php bin/mnb-secure queue:work default --once
php bin/mnb-secure queue:work files --max-jobs=10
php bin/mnb-secure queue:status job_abc123
php bin/mnb-secure queue:failed
php bin/mnb-secure queue:retry job_abc123
php bin/mnb-secure queue:dead-letter
php bin/mnb-secure queue:metrics
php bin/mnb-secure queue:pressure
php bin/mnb-secure queue:handlers
php bin/mnb-secure queue:release-gate
bash
php bin/mnb-secure token:policy
php bin/mnb-secure token:revoke <jti>
php bin/mnb-secure token:introspect <jti>
php bin/mnb-secure token:cleanup
php bin/mnb-secure token:family <family_id>
php bin/mnb-secure token:revoke-family <family_id>
php bin/mnb-secure session:policy
php bin/mnb-secure session:list
php bin/mnb-secure session:revoke <session_id>
php bin/mnb-secure session:revoke-user <user_id>
php bin/mnb-secure session:cleanup
php bin/mnb-secure session:check <session_id>
php bin/mnb-secure session:devices <user_id>
bash
php bin/mnb-secure xss:policy
php bin/mnb-secure xss:scan
php bin/mnb-secure xss:escape-sample
php bin/mnb-secure production:readiness
php bin/mnb-secure production:env-checklist
php bin/mnb-secure production:release-plan
php bin/mnb-secure release:manifest
php bin/mnb-secure release:build-plan
php bin/mnb-secure final:gate
bash
php demos/run-all-demos.php
bash
php bin/mnb-secure release:manifest
php bin/mnb-secure release:build-plan
php bin/mnb-secure production:release-plan