FreeBSD中CGI和SSI的安全性

允许根据用户的请求而在服务器上运行程序,本身就是一种安全漏洞,因此只有在必要时,才允许用户使用这些功能。

对于SSI,安全问题比较简单,可以将其设置为只分析普通标志,不执行外部程序,这必须在配置文件中使用Options IncludesNOEXEC选项,而非Options Includes选项。就能满足对安全性的一般要求。

CGI程序的情况更为复杂。由于CGI可以用两种方式设置,一种为由ScriptAlias设置CGI程序的路径,另一种为通过设置CGI的后缀而设置的。通常只有在信任用户有能力创建没有(或很少)漏洞的CGI程序时,才使用后缀确认CGI程序。否则将会产生一些很糟糕的CGI程序,使得系统很容易被攻击。因此将CGI程序限制在一些固定目录下的做法更为常见,这至少让一个CGI程序经过服务器管理员的一些检查,避免明显的漏洞。

CGI程序的另一个问题是,如果CGI程序要保存浏览器客户发布的数据,那么它就要访问系统的文件系统。通常Apache服务器使用User和Group配置服务器运行的用户和组属性,Apache服务器启动的CGI程序缺省也使用这个用户和组属性运行,也就拥有了这个用户和组的权限,可以存取文件系统中的数据,这就对系统安全造成另一个影响。然而又必须让CGI程序存取数据文件,因此就要适当调整User和Group的设置,使得它能够存取合适的数据文件。

即使如此,由于所有的CGI程序都以同样的用户执行,那么不同用户的CGI就能相互操作别的用户的数据文件,从而造成安全问题。为了使得不同的用户以不同的用户身份执行CGI,就需要使用程序的SetUID功能。因为SetUID 会带来极大的系统漏洞问题。因此如非必要,不要使用SetUID程序,尤其是root身份的SetUID程序。设置用户身份的问题可以使用Apache的suEXEC能力来帮助完成,它首先将身份改变为合适的用户,再执行相应的CGI程序。

时间: 2024-10-29 03:49:01

FreeBSD中CGI和SSI的安全性的相关文章

Linux与FreeBSD中TCP协议栈实现之比较

作为两个最有名的开源操作系统,Linux和FreeBSD是网管们的首选.Linux以开放性和 众多的驱动支持著称,而FreeBSD有着优良的UNIX传统,是公认的最稳定的操作系统. 那么,在这两个操作系统间,该如何选择呢?幸好,我们有源码,可以从协议栈的实现中寻找答案.TCP/IP协议栈是网络中广泛使用的事实网络通信标准.最初的TCP实现源自4.4BSDlite,在Linux兴起后,也不可避免得支持它.但Linux的实现自成体系,仅与传统实现保持接口上的兼容,下面我们将针对源码级的实现,来分析一

Freebsd中安装运行CVSup方法介绍

先来讲安装CVSup方法 在首次运行 CVSup 之前, 务必确认 /usr/ports 是空的! 如果您之前已经用其他地方安装了一份 Ports 套件,则 CVSup 可能不会自动删除已经在上游服务器上删除掉的补丁文件. 1.安装 net/cvsup-without-gui 软件包: # pkg_add -r cvsup-without-gui请参见 如何安装 CVSup (第 A.5.2 节) 以了解更多细节. 2.运行 cvsup:  代码如下 复制代码 # cvsup -L 2 -h c

让Apache支持cgi、SSI、shtml的配置方法_Linux

1.首先明确,只能够指定某个确定的目录,支持cgi,即运行该目录执行cgi程序:否则不太安全.寻找: 复制代码 代码如下:     #    # "C:/Program Files/Apache Group/Apache/cgi-bin" should be changed to whatever your ScriptAliased    # CGI directory exists, if you have that configured.    #    <Director

FreeBSD中使用串行通信进行远程内核调试

探索在不影响系统性能的情况下,如何远程调试正在目标计算机上运行的 FreeBSD 内核.本文讨论如何使用串行通信端口设置调试环境.如何编译经过修改的内核代码.如何进行调试,并介绍了一些故障诊断提示. 引言 FreeBSD 是从 BSD 衍生而来的高级操作系统,BSD 则是加利福尼亚大学伯克力分校开发的 UNIX 版本.它提供了很高的性能,与其他系统的兼容性更强,并且需要的系统管理更少.FreeBSD 包含了内核级的状态式 (Stateful) IP 防火墙以及许多其他服务,如 IP 代理网关.访

在ASP中过滤用户输入 提高安全性

安全|安全性|安全|安全性 安全对于所有应用程序来说都是十分重要的.一个简单应用程序里的某个失误都会造成对数据库或者其他企业资源未经授权的访问,因此安全尤其重要.一种常用的攻击方法是将命令嵌入到用户的回应里,而从用户输入里过滤掉这些非法的字符就能够防止这种攻击. 允许用户输入非法的字符会增加用户导致问题的机会.例如,很多应用程序都能够接受用户在SQL命令里增加的WHERE子句.恶意用户会通过向其输入的信息里增加额外命令的方法,来执行数据库服务器上的代码.例如,他们不是输入"Smith"

FreeBSD中建立文件系统

建立文件系统 当系统负载逐步增加,仅仅依靠原有文件系统的空间是不够的,更有效的方式是增加新的硬盘设备.这首先需要改动硬盘及其控制器的硬件设置,以及FreeBSD内核配置,以便硬盘能安装到计算机上并能被FreeBSD内核正确识别.接下来就需要在新硬盘上创建新的文件系统. 在系统安装过程中,已经接触了在FreeBSD下管理硬盘和分区的方式,FreeBSD需要两个步骤才能为文件系统分配一个硬盘空间,第一步是为FreeBSD创建一个UFS系统分区,这个分区只由FreeBSD来使用,然后在第二步中从这个分

FreeBSD中检查硬盘调整文件系统的目录结构

由于文件系统是系统中非常重要的部分,因此维护文件系统的任务也非常重要.这个任务包括检查.修复文件系统,以及调整目录树以适合系统的变化,增添新存储设备等. 检查硬盘 正常情况下使用FreeBSD的时候,文件系统不会出现问题.然而在某些情况下,如没有正常关机操作就切断了计算机的电源,就会造成文件系统出现问题.此外,出于系统维护的目的,也需要经常检查磁盘的正确性.这就需要使用文件系统检查工具fsck. # fsck /dev/wd0s3e ** /dev/rwd0s3e ** Last Mounted

FreeBSD中管理交换设备

在FreeBSD系统中,交换设备的作用非常大,需要为FreeBSD留下足够的交换空间.在系统负载非常大的时候,交换空间不够也会影响系统的执行进程.通常应该将系统交换空间的大小设置为物理内存的1-2.5倍.由于交换空间是用作虚拟存储器,和物理内存进行交换数据的,因此应该设置到高速硬盘上,或者将交换空间分布到多个硬盘中,以均衡负载.FreeBSD是以交错的方式使用各个不同的交换分区,因此如果在不同的硬盘上分布交换分区,就能提高交换设备的存取速度.通常FreeBSD使用disklabel为b的设备用做

在FreeBSD中安装双网卡实例

当我们使用FreeBSD作网关或防火墙时,会要求在系统中安装两块网卡,分别跨越两个网络,一块卡用于外部网络,而另一块用于内部网络.好了,就象大家知道的那样,现在需要让系统支持这些新设备,而对于网络适配器,FreeBSD是通过定制内核来支持的.当然,首先要让内核了解设备所用的硬件资源,对于使用PCI接口的网卡,我只能说,拥有高科技真是幸福,因为这类网卡在PCI PnP BOIS的支持下,只要在内核中多添一个设备配置就可在新内核引导时自动检测并启动:而对于ISA的卡,就没有这样简单了,不过只要去Pn