php开源沙箱,PHPSandbox - 一个基于PHP沙箱环境拥有全套配置和验证选项

这是一个全面的PHP5.4沙箱类,使用PHP解析器防止被沙箱化的代码运行不安全的代码。它还利用Function Parser来拆解可调用的函数,使PHP函数可以在沙箱中运行而无需先转换为字符串。功能包括精细的白名单和黑名单控制,内置动态演示系统,重新定义内部PHP函数以增强安全性,以及自定义错误和异常处理器等。
摘要由CSDN通过智能技术生成

d53e057e35aeafa7b4a35567f1f4c84e.png

A full-scale PHP 5.4+ sandbox class that utilizes PHP-Parser to prevent sandboxed code from running unsafe code.

It also utilizes FunctionParser to disassemble callables passed to the sandbox, so that PHP callables can also be run in sandboxes without first converting them into strings.

fc91dd6eb05a86bc95a08942ee60f8ea.png68747470733a2f2f706f7365722e707567782e6f72672f636f72766564612f7068702d73616e64626f782f762f737461626c652e706e6768747470733a2f2f706f7365722e707567782e6f72672f636f72766564612f7068702d73616e64626f782f646f776e6c6f6164732e706e6768747470733a2f2f706f7365722e707567782e6f72672f636f72766564612f7068702d73616e64626f782f762f756e737461626c652e706e6768747470733a2f2f706f7365722e707567782e6f72672f636f72766564612f7068702d73616e64626f782f6c6963656e73652e706e6768747470733a2f2f7777772e76657273696f6e6579652e636f6d2f757365722f70726f6a656374732f3536626135636332326132396564303032643261663565322f62616467652e7376673f7374796c653d666c6174

Features:

Finegrained whitelisting and blacklisting, with sensible defaults configured.

Includes dynamic demonstration system that allows for local testing of custom sandbox configurations

Can redefine internal PHP and other functions to make them more secure for sandbox usage.

Can redefine superglobals and magic constants to expose your own values to sandboxed code.

Can overwrite the get_defined_* and get_declared_* functions to show only allowed functions, classes, etc. to the sandboxed code.

Can selectively allow and disallow function creation, class declarations, constant definitions, keywords, and much more.

Can prepend and append trusted code to setup and tear down the sandbox, and automatically whitelist the classes, functions, variables, etc. they define for the sandbox.

Can retrieve the generated sandbox code for later usage.

Can pass arguments directly to the sandboxed code through the execute method to reveal chosen outside variables to the sandbox.

Can access the parsed, prepared and generated code ASTs for further analysis or for serialization.

Can define custom validation functions for fine-grained control of every element of the sandbox.

Can specify a custom error handler to intercept PHP errors and handle them with custom logic.

Can specify a custom exception handler to intercept thrown exceptions and handle them with custom logic.

Can specify a validation error handler to intercept thrown validation errors and handle them with custom logic.

Can intercept callbacks and validate them against function whitelists and blacklists, even if they are called as strings

Example usage:

function test($string){

return 'Hello ' . $string;

}

$sandbox = new PHPSandbox\PHPSandbox;

$sandbox->whitelistFunc('test');

$result = $sandbox->execute(function(){

return test('world');

});

var_dump($result); //Hello world

Custom validation example:

function custom_func(){

echo 'I am valid!';

}

$sandbox = new PHPSandbox\PHPSandbox;

//this will mark any function valid that begins with "custom_"

$sandbox->setFuncValidator(function($function_name, PHPSandbox\PHPSandbox $sandbox){

return (substr($function_name, 0, 7) == 'custom_'); //return true if function is valid, false otherwise

});

$sandbox->execute(function(){

custom_func();

});

//echoes "I am valid!"

Custom validation error handler example:

$sandbox = new PHPSandbox\PHPSandbox;

//this will intercept parser validation errors and quietly exit, otherwise it will throw the validation error

$sandbox->setValidationErrorHandler(function(PHPSandbox\Error $error, PHPSandbox\PHPSandbox $sandbox){

if($error->getCode() == PHPSandbox\Error::PARSER_ERROR){ //PARSER_ERROR == 1

exit;

}

throw $error;

});

$sandbox->execute('<?php i am malformed PHP code; ?>');

//does nothing

Disable validation example:

$sandbox = new PHPSandbox\PHPSandbox;

//this will disable function validation

$sandbox->setOption('validate_functions', false); // or $sandbox->validate_functions = false;

$sandbox->execute('<?php echo system("ping google.com"); ?>');

//Pinging google.com. . .

Requirements

PHP 5.4+

FunctionParser (if you wish to use closures)

PHP should be compiled with --enable-tokenizer option (it typically is)

Installation

To install using composer, simply add the following to your composer.json file in the root of your project:

{

"require": {

"corveda/php-sandbox": "2.*"

}

}

Then run composer install --dry-run to check for any potential problems, and composer install to install.

LICENSE

Copyright (c) 2013-2016 by Corveda, LLC.

Some rights reserved.

Redistribution and use in source and binary forms, with or without

modification, are permitted provided that the following conditions are

met:

* Redistributions of source code must retain the above copyright

notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above

copyright notice, this list of conditions and the following

disclaimer in the documentation and/or other materials provided

with the distribution.

* The names of the contributors may not be used to endorse or

promote products derived from this software without specific

prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY

THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值