Pro PHP Programing之安全白名单和黑名单

白名单和黑名单

对于include或者require函数的调用,不应该使用$_GET或$_POST值,因为尚不知晓文件名称。攻击者试图通过为文件名添加…/…/之类的前缀绕过文档根目录的权限控制。对于include或require调用中的变量,应该使用可接受文件名的白名单或净化文件名。

注意:白名单是包含获准项的列表,黑名单则是包含禁止项的列表。白名单比黑名单更加严格,因为它们具体指定了获准项,黑名单则需要不断更新才能有效。

白名单的例子有可接受的电子邮件地址、域名或者HTML标签。黑名单的例子有禁用的电子邮件地址、域名或HTMl标签。

【示例】:使用可接受文件名的白名单限制include文件

<?PHP
       //允许使用文件名的白名单
       $allow_includes = array('fish.php','dogs.php','cat.php');
       if(isset($_GET['animal'])){
              $animal = $_GET['animal'];
              $animal_file = $animal.'.php';
              if(in_array($animal_file,$allow_includes)){
                     require_once($animal_file);
              }else{
                     echo "Error:illegal animal file";
              }
       }
      
?>


对于此脚本打开的文件,basename函数用于确保引用的文件不在文件根目录之外。

对于用户申请的和使用file_get_contents获取的外部URL,必须过滤文件名。可以使用parse_url函数抽取URL并丢弃查询字符串,或者使用FILTER_SANITIZE_URL和FILTER_VALIDATE_URL以确保URL合法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pro Perl Programming 是指专业的 Perl 编程。Perl 是一种通用的、解释型的、动态的编程语言。它具有强大的文本处理能力和灵活的语法,使得它在 Web 开发、系统管理、数据处理等方面都得到广泛应用。 Pro Perl Programming 的主要特点包括: 1. 功能丰富:Perl 提供了许多内建函数和模块,这些函数和模块可以用于各种任务,如字符串处理、文件操作、数据库连接等。这使得开发人员可以方便地完成复杂的任务,提高开发效率。 2. 可扩展性强:Perl 允许开发人员自定义函数和模块,以满足特定需求。通过使用 CPAN(Comprehensive Perl Archive Network)上的数以万计的模块,开发人员可以快速获取到各种功能强大的工具,极大地增强了 Perl 的功能。 3. 文本处理能力强:Perl 在文本处理方面有着卓越的性能。它提供了强大的正则表达式和字符串处理功能,可以快速地提取、处理和转换文本数据。这使得 Perl 成为处理日志文件、解析网络协议等场景中的首选工具。 4. 跨平台性好:Perl 不仅在 Unix/Linux 环境下得到广泛应用,还可以在 Windows、macOS 等操作系统上运行。这使得开发人员可以跨平台地开发和部署 Perl 程序。 5. 社区支持强大:Perl 有一个庞大的开发者社区,开发者可以在社区中获取到丰富的教程、示例代码和解决方案。共享和交流优秀的开发经验,使得开发人员能够更好地应用 Perl 进行编程。 总之,Pro Perl Programming 表示专业的 Perl 编程能力,通过充分发挥 Perl 的各项特点,开发人员可以高效地完成各种任务,实现丰富的功能,优化应用性能,提高编程效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值