软件应用程序安全开发指南(SDLC)(22)
2023-06-18 来源:飞速影视
为Internet上CGI的开发工具,使得它经常成为Web服务器上的攻击目标。
另外,大多数CGI脚本有着比一般用户更高的权限,导致它更容易受攻击。下面列举了一些开发者(特别是CGI程序员)可以使用的主动的预防性的措
施来增强Perl代码的整体安全性(请注意:这不是Web服务器CGI脚本安全性的指导原则)。
3.7.1.Taint验证
Perl版本5.x包含一个叫做TaintChecking的数据验证措施。如果起用该
功能,将不允许通过用户输入(任何程序外的输入)来操纵其他的外部程序
(例如通过管道将数据导入另一个程序执行))。一般而言,程序员不能信
任输入脚本和程序的数据(叫做Tainted数据),因为无法保证它不会产生危害(有意或者无意的)。Taint验证可以通过在命令行参数加入"-T"来开启。
例如你可以在Perl脚本的第一行这样加入"-T":
#!usr/bin/perl5-T
Tainted数据包括命令行参数、环境变量和来自文件的数据。引用tainted
数据的变量也称为tainted数据。如果脚本试图通过不安全的方式来使用tainted数据会产生一个致命错误(对这种情况称为"不安全的依赖"(Insecuredependency)或者其他的说法)。启用tainted验证在有些情况下会导致脚本停
止运行,常常是由于Perl解释器要求所有脚本引用的外部程序的完全路径必
须在PATH环境变量中列出,同时PATH中包含的每个目录除了目录的所有
者及相应的所有者用户组外无法修改。Taint验证对于环境比较敏感,但是
只要可能的话,应该使用taint验证,特别是代码执行其他程序功能时(例如在CGI脚本的情况下)。
3.7.2.安全模块
如果不但输入数据不可信而且实际的代码也不可信,例如用户从网站上下载了一个ActiveX控件,而它实际是一个特洛伊木马(Trojanhorse)。这种情况下taint验证就不起作用。安全模块让程序员可以在Perl脚本中将不同
的代码模块与安全对象联系。每个安全对象对于运行的每块代码建立了一个
限制的环境。这与chroot在一个进程中只能在整体目录结构的一个子目录中
运行类似。而saft对象限制perl代码只能在perl包结构的某些特定包中运行。
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号