Bash严重漏洞修复

检测:env x='() { :;}; echo vulnerable’ bash -c “echo this is a test”

UBuntu修复:

apt-get update

apt-get install bash

修复之后:

env x='() { :;}; echo vulnerable’ bash -c “echo this is a test”
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x’
this is a test

坑爹的serialize和unserialize

今天项目当中遇到一个奇葩的问题,无法返序列化!!!!

a:2:{s:9:”condition”;s:0:”;s:5:”value”;  这是其中的一段字符串!

提示:: Error at offset 26 of 119 bytes

网上说有说编码的问题

不过安全的序列化是这样的:http://davidwalsh.name/php-serialize-unserialize-issues

后来看了一个数字26觉得很奇怪, 为何是26而不是别的,于是数了数,发现s:0:”这个地方是单引号!!!!然后就~你们懂了~既然数据是这样,我就弄一个替换先解决了这个问题再说!

str_replace(“s:0:””, ‘s:0:””‘, $str);

然后就好了~

不过我不建议将序列化的数据存在数据库,我比较喜欢json_encode哈哈~

vi拾遗

1.命令行模式

:%s/abc/def/g      替换所有abc为def

:%s/abc/def/        替换每行第一个abc为def

:s/abc/def/g          替换当前行所有abc为def

MySQL datetime时间误差8个小时

数据库设计为datetime类型,如果自动获取的时间有误差8个小时的可以在mysql的配置文件[msyqld],切记在这个段下面配置
default-time-zone = ‘+8:00’

即可!

备注:ubuntu设置系统时间地区可以,执行tsselect,然后选择之后sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

再输入date看看时间是不是和北京时间一样了~~~

forever使用

1.启动程序
forever start server.js

2.启动程序指定信息输出文件(默认为~/.forever/forerver.log)
forever start -l /var/log/server.log server.js

3.指定程序日志信息以及错误日志文件
forever start -o console.log -e error.log server.js
其中-o指定的是用console.log输出的内容,而-e是用console.error输出的

4.监听当前文件夹下所有文件改动
forever start -w server.js
这样就不用每次改动都用node server.js了!当然生成环境还是不要这样启动的~

5.命令帮助
forever -h
forever list显示所有运行的服务
forever stopall 停止所有运行的node 应用
forever restartall 重启所有

express获取参数

ajax异步提交的数据,使用

     bodyParser = require('body-parser');
    //接收post
    app.use(bodyParser.urlencoded({extended: false}));
    app.use(bodyParser.json());
app.post("/get_new_message", function(req,res){//获取新消息
	res.writeHead(200, {'Content-type': 'text/plain'});
	console.log(req.param('uid'), req.param);
});
//express获取参数原型
function (name, defaultValue){
  var params = this.params || {};
  var body = this.body || {};
  var query = this.query || {};
  if (null != params[name] && params.hasOwnProperty(name)) return params[name];
  if (null != body[name]) return body[name];
  if (null != query[name]) return query[name];
  return defaultValue;
}

 
说明应该可以获取到get和post的所有参数
备注:body-parser非常重要,具体可以参考:https://github.com/expressjs/body-parser 具体原因你可以搜索
application/x-www-form-urlencoded

command not found: express

sudo npm install express -g

然后输入

express -e project结果提示

command not found: express

原来4.0以后就express和命令分开了!!!需要安装

sudo npm install -g express-generator

这样就好了!!!!

这个是node好基友~

CI页面乱码

今天项目页面乱码

我确认了数据库读取时utf8,页面也添加

<meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ />

再确定程序页面编码同样是utf-8!!!!!!可以页面依旧乱码。~~~

其实我看服务器的response

Content-Type:text/html; charset=gb2312

我看到了不想看的内容!!!!!

忽然想起ci的output类找代码看看set_content_type和set_header

我在我控制集成的父类添加了

$this->output->set_header(“Content-Type: text/html; charset=utf-8”);

这样就解决了问题!

nodejs获取GET和POST(升级版)

写在最前面,其实开发当中可以使用express(比较流行的一个web框架)

var _res,_req,url = require('url'),queryString = requery('quertstring');
//初始化
exprots.init = function(req, res) {
	_req = req;
	_res = res;
}
//获取GET参数
exports.GET = function(key) {
	var paramStr = url.parse(_req.url).query,
		param = queryString.parse(paramStr);
	return param[key] ? param[key] : '';
}
//获取POST参数()
exportes.POST = function(key,callback) {
	var postData = '';
		_req.addListener('data', function(postDataStream){
			postData += postDataStream;
		});
		_req.addListener('end', function(){//数据接收完毕开始处理
			var param = queryString.parse(postData);
			var val = param[key] ? param[key] : '';
			callback(val);
		});
}

 

nodejs获取POST参数

var http = require('http'),
	url = require('url'),
	querystring = require('querystring');
http.createServer(function(req, res){
	var postData = "";
	req.setEncoding('utf-8');//设置编码
	
	req.addListener('data', function(postDataStream){
		postData += postDataStream
	});
	
	req.addListener('end', function(){
		//数据接收完毕
			var param = querystring.parse(postData);
			console.log(param);
		
	});
	res.writeHead(200, {'Content-Type':"text/plain"});
	res.end('success');
}).listen('3000');
//请求curl -d "a=2&b=3" http://localhost:3000
//console.log(param);//{ a: '2', b: '3' }