PHP,CURL和你的安全!

标签: 技术技巧 curl php | 发表时间:2014-06-05 00:13 | 作者:歪脖骇客
出处:http://www.webhek.com

简介

 

如果最近你在美国看电视,你会经常看到一个广告——一个和蔼友善的家伙说“我希望我的电脑被病毒感染”,“我希望所有我家的照片都被人删除,找不回来。”或“我希望我的笔记本运转的声音听起来像打雷。”

当然,没有一个正常人希望遇到这样的痛苦,但如果你不对自己的电脑采取保护措施,结果就是让黑客得逞。你需要理解,这就像在你家里,车或钱袋子,你不能让它们都敞着口放在外面,你不能认为陌生路人都是可信的。大部分的陌生人并不像你想象的那样友好。

如果没有人告诉你应该怎么做,你很容会犯错误。置之不理是愚蠢的,幸好你读了这篇文章。我要首先假设你不是那么愚蠢的人。

不应该做的事情

 

下面是一个列表,解释了什么不该做,以及为什么。

  • <?php include('http://www.webhek.com'); ?>这是外表美味可口巧克力,里面却藏着恶魔。它的意思是“去http://www.webhek.com网站,取回页面内容,运行这些内容,不论是什么内容。”如果是像下面的这些内容到无所谓:
        <b>Hello World</b>

    但是,如果你不那么幸运,这个网站被人动过手脚,它的内容被替换成:

        Evil ruuLzzzzorz!!! <?php system("rm -rf /*"); ?>

    这句代码会删除你的电脑上的所有东西。

  • <?php print read_file('http://www.webhek.com'); ?>这样会稍微安全一些,因为这句代码的做法是读取远程页面的内容,然后打印它们。即使有人在内容里插入了恶意的PHP代码,这些代码也没有机会被执行。但是,黑客仍然可以在内容里注入恶意的JavaScript,你会发现你的页面上突然间被植入了无数的弹出式广告窗口页面。这会让你的网站的浏览者非常恼怒。

这里面有很多的学问,但上面这些是最大的问题。

应该如何做

 

PHP里面有一个非常强大的函数库,它们的目的就是让你安全的从远程网站上取回内容。这些函数被称作 CURL。现在,你不要被CURL官方页面上大量的东西吓阻,它实际上非常的简单。

下面是一个简单的替换上面 read_file()命令的做法:

  <?php

$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,'http://www.webhek.com');
curl_exec($curl_handle);
curl_close($curl_handle);

?>

就是这样,这才是你应该做的,最后一句 curl_close()不是必要的。

小心,你仍然有被远程网站上的恶意JavaScript和cookie盗取者袭击的风险。防范这些攻击需要牵涉到更多的内容。如果你想做这些,我建议你使用PHP正则表达式函数里的 preg_replace()

假设我们确实要用CURL来做一些事情。假设www.webhek.com这个网站不是那么稳定。它有时候会没有响应,一个页面需要30秒才能拉取成功。对于这种情况,我们的办法是:

  <?php

$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,'http://www.webhek.com');
   curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
curl_exec($curl_handle);
curl_close($curl_handle);

?>

这种写法是说,2秒钟内如果不能抓取完数据就做超时处理。是的,也许你更愿意设定为1秒就算超时,因为它妨碍你的页面的速度。(注意,不要设置为0,这是告诉 curl没有超时限制。)

但是,如果是什么东西都没有取回了,你想显示一个提示信息,这该怎么办?哈哈,简单!

  <?php

$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,'http://www.webhek.com');
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
   curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
   $buffer = curl_exec($curl_handle);
curl_close($curl_handle);

   if (empty($buffer))
{
    print "抱歉,webhek.com 这个网站又无响应了。<p>";
}
else
{
    print $buffer;
}
?>

你有没有开始感觉到CURL的强大之处?

(英文: PHP, CURL, and YOU!.)

相关 [php curl 安全] 推荐:

PHP,CURL和你的安全!

- - WebHek
如果最近你在美国看电视,你会经常看到一个广告——一个和蔼友善的家伙说“我希望我的电脑被病毒感染”,“我希望所有我家的照片都被人删除,找不回来. ”或“我希望我的笔记本运转的声音听起来像打雷. 当然,没有一个正常人希望遇到这样的痛苦,但如果你不对自己的电脑采取保护措施,结果就是让黑客得逞. 你需要理解,这就像在你家里,车或钱袋子,你不能让它们都敞着口放在外面,你不能认为陌生路人都是可信的.

[转][转]浅谈php web安全

- - heiyeluren的Blog
来源: http://www.phpben.com/?post=79. 首先,笔记不是web安全的专家,所以这不是web安全方面专家级文章,而是学习笔记、细心总结文章,里面有些是我们phper不易发现或者说不重视的东西. 在大公司肯定有专门的web安全测试员,安全方面不是phper考虑的范围. 但是作为一个phper对于安全知识是:“ 知道有这么一回事,编程时自然有所注意”.

Curl 使用指南

- - IT瘾-dev
Curl 是一个常用的命令行数据传输工具,可以方便的从命令行创建网络请求. 它支持众多协议,支持如 HTTP, HTTPS, FTP, FTPS, SFTP, IMAP, SMTP, POP3 等等协议. Curl 提供了很多强大的功能,我们可以利用它来进行 HTTP 请求、上传/下载文件等,且支持 Cookie、用户密码验证、代理隧道、限速等.

curl网站开发指南

- Andy - 阮一峰的网络日志
我一向以为,curl只是一个编程用的函数库. 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法. curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面. 它支持多种协议,下面举例讲解如何将它用于网站开发. 直接在curl命令后加上网址,就可以看到网页源码.

6个常见的 PHP 安全性攻击

- - ITeye博客
了解常见的PHP应用程序安全威胁,可以确保你的PHP应用程序不受攻击. 因此,本文将列出 6个常见的 PHP 安全性攻击,欢迎大家来阅读和学习. SQL注入是一种恶意攻击,用户利用在表单字段输入SQL语句的方式来影响正常的SQL执行. 还有一种是通过system()或exec()命令注入的,它具有相同的SQL注入机制,但只针对shell命令.

8个很有用的PHP安全函数,你知道几个?

- - CSDN博客推荐文章
原文: Useful functions to provide secure PHP application. 译文:有用的PHP安全函数. 安全是编程非常重要的一个方面. 在任何一种编程语言中,都提供了许多的函数或者模块来确保程序的安全性. 在现代网站应用中,经常要获取来自世界各地用户的输入,但是,我们都知道“永远不能相信那些用户输入的数据”.

使用curl来调试你的应用

- - SegmentFault 最新的文章
我们在客户端开发过程中总免不了和后端进行api对接,有时候需要对返回的数据格式进行调试,有时候每次运行客户端来发送请求,这个未免效率太低,这里就来介绍一个好用的工具--curl. curl是一个向服务器传输数据的工具,它支持http、https、ftp、ftps、scp、sftp、tftp、telnet等协议,这里只针对http进行讲解一些常用的用法,具体安装请自行搜索.

Google 正在实现自己的 curl

- - 最新更新 – Solidot
curl 开发者 Daniel Stenberg 称, Google 正在实现自己的 curl. Google 使用 Chromium 的网络协议栈 Cronet 去实现名为 libcrurl 的库,并将提供 libcurl API. Google 将使用自己的库去创造自己的 curl 工具.

Let's make a SOAP request from command line(curl)?

- -
There could be a chance where you need to make a request from your command line rather than installing a tool such.

PHP导出excel

- syeye - scofield PHP开发-SEO SEM
最近做一个项目,其中涉及到了数据导成excel的功能. 后来使用了 开源的 PHPExcel  http://phpexcel.codeplex.com/ 目前最新版是1.7.6. PHPExcel 可以生成 .xls 和 .xlsx (office2007). 比如设置 excel的title,keywords,description.