微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > CGI安全问题专题

CGI安全问题专题

时间:05-17 来源:互联网 点击:
/cgi-bin/foobar.sh/public/faq.txt )时,该脚本正常工作,但是一个更有创造性的(或恶意的)用户可能会利用它接收 服务 器上的任何文件。如果他想进入 http://www.server.com/cgi-bin/foobar.sh/etc/passwd ,前面的脚本会很高兴地返回机器的口令文件——这可是不希望发生的事。 另一种安全得多的方式是在可能时使用PATH _ TRANSLATED环境变量。不是所有的 服务 器都支持该变量,所以脚本不能依赖于它。不过如果有的话,它能提供完全修饰的路径名,而不是像PATH _ INFO提供的相对URL。 不过在某种情形下,如果在CGI脚本中使用PATH _ TRANSLATED的话,则可以访问通过浏览器不能访问到的文件。应该知道这点及它的应用。 在大部分UNIX 服务 器上,htaccess文件可以位于文档树的每个子目录,负责控制谁能够访问该目录中的特殊文件。例如它可以用于限制一组Web页面只给公司雇员看。 虽然 服务 器知道如何解释.htaccess,从而知道如何限制谁能还是不能看这些页面,CGI脚本却不知道。使用PATH _ TRANSLATED访问文件树中任意文件的程序有可能碰巧覆盖了 服务 器提供的保护。 无论使用PATH _ INFO还是PATH _ TRANSLATED,另一个重要的步骤是验证路径以确保它或者是一个真正的相对路径或者是脚本认可的几个准确的、预知的路径之一。对于预定的路径,脚本将简单地将提供的数据与认可可以使用的文件的内部清单进行比较,这就是说在增加文件或修改路径时必须重新编译脚本,但安全性却有了保障。只允计用户选择几个预定义的文件而不允许用户指定实际的路径和文件名。 下面是处理访问者提供的路径时应遵循的一些规则。 1)相对路径不以斜线开头。斜线意味着相对于根或绝对路径。如果有的话,CGI脚本也是很少需要访问Web根之外的数据。这样它们使用的路径就是相对于Web根目录,而不是绝对路径。应拒绝任何以斜线开始的内容。 2)在路径中单个点(.)和两个点(..)的序列也有特殊含义。单点意味着对对于当前目录,而双点意味着相对于当前目录的父目录。聪明的黑客可以建立象../../../etc/passwd这样的串逆向三层,然后向下进入/etc/passwd文件。应拒绝任何包含双点序列的内容。 3)基于NT 服务 器使用驱动器字母的概念来引用磁盘卷。包含对驱动器的引用的路径都以一个字母加上一个冒号开头。应拒绝任何以冒号为第二个字符的内容。 4)基于NT的 服务 器还支持Univesal Naming Conventions(UNC)引用。一个UNC文件规格指定机器名和一个共享点,其余部分与指定机器上的指定的共享点有关。UNC文件规格总是以两个反斜线开头。应拒绝任何UNC路径。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top