免费杀毒软件,全面病毒解决方案

投递文章  投稿指南 金山毒霸非官方通告:
搜索: 您的位置毒霸首页>毒霸资讯>安全动态>阅读资讯:PHP共享环境中的安全配置

PHP共享环境中的安全配置

2008-05-17 00:41:16   来源:   作者:   【 评论:0

  [ 使用安全模式来强制限制 ]

  当安全模式打开的时候,以下函数列表的功能将会受到限制:

  以下执行命令的函数列表将会受到影响:

  exec, shell_exec, passthru, system, popen

  另外,背部标记操作符(`)也将被关闭。   

  [ 打开安全模式 ]

  safe_mode = On

  比如你想要在安全模式下包含 /usr/local/include/php 下的文件,那么你可以设置选项为:

  safe_mode_include_dir = /usr/local/include/php

  safe_mode_exec_dir = /usr/local/php-bin

  (可执行:如果你执行的程序在 /usr/bin 目录下,那么你可以把这些的二进制文件,连接到你指定选项下能够执行的路径)

  比如下面允许时区的环境变量 TZ ,那么修改该选项的值为:

  safe_mode_allowed_env_vars = PHP_,TZ

  除了安全模式以外,PHP还提供了许多其他许多特征来保证PHP的安全。

  你能够在php.ini里使用 expose_php 选项来防止Web服务器泄露PHP的报告信息。如下:

  expose_php = On

  利用整个设置,你能够阻碍一些来自自动脚本针对Web服务器的攻击。通常情况下,HTTP的头信息里面包含了如下信息:

  Server: Apache/1.3.33 (Unix) PHP/5.0.3 mod_ssl/2.8.16

  OpenSSL/0.9.7c

  在 expose_php 选项打开以后,PHP的版本信息将不包含在上面的头信息里。

  AddType application/x-httpd .php

  AddType application/x-httpd .html .htm

  [ 文件系统安全 ]

  限制文件系统只能访问 /tmp 目录,那么设置选项为:

  open_basedir = /tmp

  [ 函数访问控制 ]

  disable_functions = dl

  当然,同样的你能够使用 disable_classes 选项来关闭对一些类的访问。

  [ 数据库安全 ]

  假设你的PHP脚本中包含一个基于表单值来执行的Mysql查询:

  $sql = “UPDATE mytable SET col1 = ” .

  POST["value"] . ”

  WHERE col2 = ’somevalue’”;

  $res = mysql_query($sql, $db);

  举例,假设下面是

  POST["value"] 提交的值:

  0; INSERT INTO admin_users (username, password)

  VALUES (’me’, ‘mypassword’);

  那么当这个查询发送给Mysql查询的时候,那么就变成了下面这条SQL:

  UPDATE mytable SET col1 = 0;

  INSERT INTO admin_users (username, password)

  VALUES (’me’, ‘mypassword’);

  WHERE col2 = ’somevalue’;

  如果你要防止 SQL injection 攻击,你必须保证用户表单里提交的内容不是一个能够执行的SQL表达式。

  $sql = sprintf(”UPDATE mytable SET col1 = %d

  WHERE col2 = ‘%s’”,



Tags:  
责任编辑:
  • 请文明参与讨论,禁止漫骂攻击。 用户名:新注册) 密码: 匿名:
    评论总数:0 [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 法律声明 - RSS订阅 - 网站地图 - 返回顶部 -