容易导致安全问题的其他函数与代码执行防御—Hack之路

容易导致安全问题的其他函数

PHP中存在大量此类危险函数,列如:

assert(),pcntl_exec(),array_filter(),preg_replace(),array_map(),require(),array_reduce(),require_once(),array_diff_uassoc(),register_shutdown_function(),array_diff,ukey(),register_tick_function(),arry_udiff(),set_error_handler(),array_udiff_assoc(),shell_exec(),array_udiff_uassoc(),stream_filter_register(),array_intersect_assoc(),system(),arry_intersect_uassoc(),usort(),array_uintersect_uassoc(),xml_set_character_data_handler(),array_walk(),xml_set_default_handler(),array_walk_recursive(),xml_set_element_handler(),create_function(),xml_set_end_namespace_decl_handler(),exec(),include,include_once(),ob_start(),passthru(),xml_set_processing_instruction_handler(),xml_set_start_namespace_decl_handler(),xml_set_unparsed_entity_decl_handler()

关于此类危险函数的使用需要谨慎,尽量不用

码执行防御

escapeshlllarg(),escapeshellcmd()函数用来保证传入的命令执行函数里的参数里的参数确实是以字符串参数的形式存在的,不能被注入。
escapeshlllarg()函数使用的示例如下

<?php
system(‘ls’.escapeshellarg($dir))
?>

escapeshellarg()将给字符串增加一个单引号,并且能引用或者转码任何已经存在的单引号,以确保能够直接将一个字串传入shell函数,并且是安全的

escapeshellcmd()对字符串中可能会欺骗shell命令执行任意命令的字符进行转义。该i函数保证用户输入的数据在传送到exec()函数或system()函数或执行操作符之前进行转义。
escapeshellcmd()函数使用示例如下。

         <?php
$command = ‘./configure ‘ . $_POST[‘configure_options’];
$escaped_command = escapeshellcmd($command);
system($escaped_command);
?>

escapeshellcmd()函数应被用在完整的命令字符串上。即使如此,攻击者还是可以传入任意数量的参数。应使用escapshellarg()函数对单个参数进行转义

网站地址:https://www.hackzl.cn;发布者:hack之路,转转请注明出处:https://www.hackzl.cn/index.php/2020/09/12/%e5%ae%b9%e6%98%93%e5%af%bc%e8%87%b4%e5%ae%89%e5%85%a8%e9%97%ae%e9%a2%98%e7%9a%84%e5%85%b6%e4%bb%96%e5%87%bd%e6%95%b0%e4%b8%8e%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e9%98%b2%e5%be%a1-hack/

发表评论

邮箱地址不会被公开。 必填项已用*标注