标签归档:安全

安全加密算法选择指南

用途 推荐使用的安全的密码算法 常见的不安全的密码算法
对称加密 AES(密钥长度>=128bits) DES、3DES、RC2、RC4
哈希算法 SHA256或以上 MD5、SHA1
非对称加密 RSA(密钥长度>=2048   bits) RSA(密钥长度<=1024bits)
数字签名 RSA(密钥长度>=2048   bits) RSA(密钥长度<=1024bits)
密钥交换 DH(密钥长度>=2048   bits) DH(密钥长度<=1024bits)

备注:

1. AES不建议使用ECB(同样的明文总是会产生相同的密文),推荐使用CBC模式。

2. 应注意编码及加密的区别,例如base64属于编码而不属于加密。

3. 加解密中建议使用安全随机数,如java.security.SecureRandom,类Unix系统 (包括OS X):  /dev/random;不安全随机数如C标准函数random(),java.util.Random()。

阅读全文

如何安全的存储密码

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

阅读全文