Posts Tagged ‘PHP’

PHP.ini 方式防注或挂马

Posted in 安全相关 on 9月 8th, 2009 by 飘(piao2010) – Be the first to comment

作者:lis0
来源:lis0’s Blog

本来这两天研究phpIDS,使用文件是:当要在防止页面攻击时,可在页面的头部include防攻击文件,就像通用防注入文件。我们可以用三种情况来办到:

1、在每个文件内引用。这样的文件是可以,不过如果一个网站内有几百个文件的话就不方便了。

2、在共同包含文件内引用一下,比如 config.inc.php。这是一个好办法,也是目前市场上比较流行的做法。

3、在php.ini中引用。在配置文件内引用的话,将影响到所有的网站,包含所有页面,这就像当年流行的一些免费空间商,当你免费开通一个ftp空间,上传网站以后,空间内会出现广告一样。不知道是不是这种方法,但是目的是一样的。这样做的好处是:如果是一个公司或者是一个企业内部网站的话,即安全,维护也方便。

前两种方法大家都清楚,第三种就是在php.ini中,找到此节: read more »

PHP实现获取客户端IP地址以及IP地址的伪造

Posted in code, 安全相关 on 8月 17th, 2009 by 飘(piao2010) – 2 Comments

以下是目前网上比较常用的获取客户端IP地址的方法

<?php 
function get_ip_address() { 
    if (isset($_SERVER)) { 
      if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
      } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { 
        $ip = $_SERVER['HTTP_CLIENT_IP']; 
      } else { 
        $ip = $_SERVER['REMOTE_ADDR']; 
      } 
    } else { //iis不支持getenv
      if (getenv('HTTP_X_FORWARDED_FOR')) { 
        $ip = getenv('HTTP_X_FORWARDED_FOR'); 
      } elseif (getenv('HTTP_CLIENT_IP')) { 
        $ip = getenv('HTTP_CLIENT_IP'); 
      } else { 
        $ip = getenv('REMOTE_ADDR'); 
      } 
    } 
    return $ip; 
} 
echo get_ip_address(); 
?>

read more »

关于file_get_contents函数超时的解决方法

Posted in code on 8月 11th, 2009 by 飘(piao2010) – Be the first to comment

今天在测试天气预报系统的时候发现一个问题,就是在网络状况比较差的情况下file_get_contents函数经常读取远程数据失败。经过Google和自己的一番测试,解决方案如下:

<?php
/*设置超时配合失败之后尝试多次读取,效果比原先好很多*/
          $opts = array( 
           'http'=>array( 
	         'method'=>"GET", 
	         'timeout'=>1, //设置超时
		) 
	); 
	$context = stream_context_create($opts); 
	$cnt=1; //最多尝试10次读取
          while(($contents = @file_get_contents("$url",false,$context)) === false && $cnt <= 10  )
		$cnt++;
?>

关于php的magic_quotes_gpc

Posted in code, 安全相关 on 8月 8th, 2009 by 飘(piao2010) – 2 Comments

今天暂时没有任务,偷偷关注一下安全方面的东东。上午回味了一下安全天使的两篇经典文章
http://www.4ngel.net/article/36.htm
http://www.4ngel.net/article/30.htm
总结出两点:
1。无论如何(即使magic_quotes_gpc=On还是可以采用char()等函数进行注射)数字型变量(SQL语句中没有用引号包围的变量)一定要进行过滤,常用intval()函数处理,
2。字符型变量(SQL语句中用引号包围的变量):
当 magic_quotes_gpc=Off 时一定要进行过滤,常用addslashes()函数处理。
当 magic_quotes_gpc=On 时程序会自动进行转义处理,注射成功的可能性较小,但也有一些程序会自动去掉magic_quotes_gpc造成的影响,造成可以继续注射。
因此为了安全起见,允许对php进行配置的话magic_quotes_gpc尽量设置成On,如果是虚拟主机的话只能尽量在程序上避免出问题了。

关于各种情下magic_quotes_gpc对数据库操作的影响总结如下:

1. 对于magic_quotes_gpc=on的情况,

我们可以不对输入和输出数据库的字符串数据作
addslashes()和stripslashes()的操作,数据也会正常显示。

如果此时你对输入的数据作了addslashes()处理,
那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。

2. 对于magic_quotes_gpc=off 的情况 read more »

PHP在线字典

Posted in code on 8月 6th, 2009 by 飘(piao2010) – 2 Comments

转载请保留版权,http://hacker-piao.cn  谢谢!

昨天实习的一个小任务,PHP在线字典,还是抓取远程数据的方式实现,与天气预报类似,不多说了,直接上代码!
read more »

PHP天气预报系统核心代码

Posted in code on 8月 1st, 2009 by 飘(piao2010) – 4 Comments

转载请保留版权:http://hacker-piao.cn 谢谢!

昨天接到公司新任务要做个天气预报查询网站,因为公司不可能直接获取天气相关数据,那就只能是抓取网络上的数据进行处理了,或者说直接跳转到某个网站的相应页面。后者处理起来简单,我这里用的是正则表达式来远程提取相关数据存入自己的数据库的方式实现。天气预报数据取自www.weather.com.cn

核心代码如下: read more »