2014-04-08 21:15:50

OpenSSL HeartBleed漏洞CentOS下简单修复过程

今天这个洞比较火,赶紧测试了下自己的网站,果然存在问题,简单的修复过程如下(CentOS 6.5): yum search openssl #返回 Updating: openssl x86_64 1.0.1e-16.el6_5.7 updates 1.5 M Updating for dependencies: openssl-devel x86_64 1.0.1e-16.el6_5.7 updates 1.2 M 看起来版本还是比较新的,遂直接 yum install openssl #然后重启nginx /etc/init.d/nginx restart #测试漏洞已修复 本来想源码编译安装的,因为以上过程便已修复,就没编译,如果yum方法不行,尝试以下安装: wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz cd openssl-1.0.1g ./config make && make install /etc/init.d/nginx restart #重启nginx 测试下是否修复了吧~ _^

2014-04-02 13:03:28

解决PHP curl https时error 77(Problem with reading the SSL CA cert (path? access rights?))

服务器环境为CentOS,php-fpm,使用curl一个https站时失败,打开curl_error,捕获错误:Problem with reading the SSL CA cert (path? access rights?) 解决方案: 1. sudo yum install ca-certificates (无论有没有,安装确认一下) 2. 重启php-fpm,这步比较重要,更改底层的东西时一定要重启一下 3. curl时设置:curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0)

2014-02-16 00:11:42

OldCMS | 版本 1.0 | 开源、简单、安全的PHP开发框架

官方网站:http://oldcms.com/ 1. 程序文件组织 | install/ /* 数据库文件、服务器Rewrite规则 */ | oldcms.sql /* 数据库文件 */ | rewrite.txt /* Rewrite规则(Apache,Nginx) */ | libs/ /* Smarty程序目录 */ | source/ /* 核心类库、方法 */ | class/ /* 类库 */ | Captcha.class.php /* 验证码类 */ | DB.class.php /* 数据库操作类 */ | Image.class.php /* 图片上传、缩略图类 */ | Pager.class.php /* 分页类 */ | PHPMailer.class.php /* 邮件类 */ | Smtp.class.php /* 邮件类 */ | User.class.php

2014-02-11 11:34:21

JS版的Flappy Bird

GitHub下载地址:Paper Plane Paper Plane!纸飞机,飞啊飞~: http://paperplane.bluereader.org (在线Play地址) Flappy Bird很好玩但不能在网页上玩? 所以昨天下班回家搞了一个JS版的,晚上睡觉前搞定上线(据说Flappy Bird是一天开发完的),不到100行的js代码(当然你能看到的,加上注释),保持简单最好。 童年的纸飞机,伴着美梦,飞起来吧~

2013-12-26 12:31:26

Wordpress开启投稿无作者时默认为管理员问题解决方法

用wordpress搭建博客,很多时候会添加陌生人可以投稿的功能,当在后台编辑无作者的这些文章时,总是会莫名奇妙的更新成别的人为作者,不胜奇烦呐,咋办? 忍无可忍了,分析了下wordpress的代码,发现wordpress在后台编辑文章时,会有个post_author_override更改项,此值默认为当前编辑人或者是最早的管理员,如果此值不empty,则最终post_author=post_author_override,所以更改代码如下: /wp-admin/includes/post.php ...... function _wp_translate_postdata( $update = false, $post_data = null ) { if ( empty($post_data) ) $post_data = &$_POST; if($post_data['post_author']<=0) $post_data['post_author_override'] = -1; //无作者更新为-1,因为wordpress中post_author为正整数,所以最终入库还是0,但可以绕过很多empty的判断 ...... function edit_post( $post_data = null ) { if (

2013-12-25 12:14:48

并发请求导致的业务处理安全风险及解决方案

0x00 背景 一段简单的购买程序,看起来没有任何问题。 剩余余额、商品库存、购买权限等判断面面俱到,从头到脚包装的严严实实。 但是为何人一多就频频漏点呐?何解? 0x01 问题分析 还是以商城购买为例,商城网站是web程序和数据库两部分,业务处理流程: 用户金额是否大于商品价格—>商品库存是否充足—>购买操作:生成订单—>扣除用户金额—>商品库存减1 流程的每一部分都是web与数据库打交道,查询或者操作数据库。 程序示例(PHP+MySQL) $goods=$db->FirstRow("SELECT * FROM ".Tb('goods')." WHERE goods_id='{$goods_id}'"); if(empty($goods)) ShowError('商品不存在'); /* 金额是否充足 */ if($user->money<$goods['price']) ShowError('金额不足,请充值'); /* 商品库存 */ if($goods['num']==0) ShowError('库存不足'); /* 购买操作 begin */ //生

2013-12-05 11:26:44

Linux下恢复rm删除的文件 (CentOS)

今天误删除了Centos服务器上的某个文件夹,找了下恢复,ext3grep,extundelete等,因为文件系统是ext4的,只能使用extundelete 1. 安装依赖 yum -y install e2fsprogs e2fsprogs-devel 2. 去http://extundelete.sourceforge.net/下载extundelete-0.2.4.tar.bz2并安装 tar -xjf extundelete-0.2.4.tar.bz2 cd extundelete-0.2.4 ./configure make make install 3. 恢复 extundelete /dev/***(挂载的硬盘) –restore-all  (可以先df一下确认下删除的文件夹所在的硬盘) 4. 去当前目录RECOVERED_FILES下查看恢复的文件吧

2013-12-05 11:25:06

MySQL异常关闭后无法启动:MySQL Daemon failed to start 解决方案(CentOS下)

今天MySQL数据库占内存过大,导致网站时常出现500错误,按以下步骤解决: 1. 尝试/etc/init.d/mysqld stop 无响应,只得ps -ef | grep mysql 然后kill掉两个相关的mysql进程 2. 尝试/etc/init.d/mysqld start 不成功,查看mysql日志 cat /var/log/mysqld.log,发现以下错误: Thread pointer: 0x0 Attempting backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went terribly wrong... stack_bottom = 0 thread_stack 0x40000 /usr/libexec/mysqld(my_print_stacktrace+0x29) [0x84f539] /usr/libexec/mysqld(handle_fatal_signal+0x483) [0x6a3713] /lib64/libpthread.so.0(+0xf500) [0x7f85469cb500] The manual page at http://dev

2013-11-28 16:26:36

php4fun.sinaapp.com PHP挑战通关攻略

challenge 1   #GOAL: get password from admin; error_reporting(0); require 'db.inc.php'; function clean($str){ if(get_magic_quotes_gpc()){ $str=stripslashes($str); } return htmlentities($str, ENT_QUOTES); } $username = @clean((string)$_GET['username']); $password = @clean((string)$_GET['password']); $query='SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';'; $result=mysql_query($query); if(!$result || mysql_num_rows($result) < 1){ die('Invalid password!