如何安全的存储密码

21
  过去一段时间来,众多的网站遭遇用户密码数据库泄露事件,这甚至包括顶级的互联网企业–NASDQ上市的商务社交网络Linkedin。

层出不穷的类似事件对用户会造成巨大的影响,因为人们往往习惯在不同网站使用相同的密码,一家“暴库”,全部遭殃。

那么在选择密码存储方案时,容易掉入哪些陷阱,以及如何避免这些陷阱?我们将在实践中的一些心得体会记录于此,与大家分享。

菜鸟方案

阅读全文

程序安全之——代码注入

很多程序上错误就 像人类世界的病毒一样,我们应该给我们的新入行的程序员普及一下程序安全知识,希望他们从入行时就对这些错误有抵抗力。

先向大家介绍第一注疫苗——代码注入。

一、Shell注入

我们先来看一段perl的代码:

  1. use CGI qw(:standard);
  2. $name = param(‘name’);
  3. $nslookup = “/path/to/nslookup”;
  4. print header;
  5. if (open($fh, “$nslookup $name|”)) {
  6.     while (<$fh>) {
  7.         print escapeHTML($_);
  8.         print “<br>\n”;
  9.     }
  10.     close($fh);
  11. }

如果用户输入的参数是:

  1. coolshell.cn%20%3B%20/bin/ls%20-l

那么,这段perl的程序就成了:

  1. /path/to/nslookup coolshell.cn ; /bin/ls -l

我们再来看一段PHP的程序:

  1. $myvar = ‘somevalue’;
  2. $x = $_GET[‘arg’];
  3. eval(‘$myvar = ‘ . $x . ‘;’);

“eval“的参数将会视同PHP处理,所以额外的命令可被添加。例如:如果”arg”如果被设成”10

阅读全文

Nginx 使用 http auth basic 认证

使用 nginx 作为前端服务器。某些资源要保护。用 http auth basic 认证简单方便。 nginx 的 http auth basic 的密码是用 crypt(3) 加密的。具体可以参考:http://wiki.nginx.org/HttpAuthBasicModule

以我们做一个简单的后台管理为例, 地址:http://xxxx/admin/*, 对admin 下面的文件进行权限管理;

1. 进入ngnix配置的地址,以我的ubuntu为例;  cd /etc/ngnix

2. 使用命令生成passfile 文件: htpasswd -c -d /etc/nginx/pass_file  username

a. 输入以上命令,回车输入密码,再次回车,输入确认密码

3. 检查pass_file是否已经存在

阅读全文