存档

  • 关于CSDN用户数据泄露的一些思考

    “有很多用户的密码在网上飘荡,而且它还是明文的” CSDN 600万的用户信息(用户名、密码和邮箱)泄露了,而且密码是明文存储的。之后又爆出了人人、多玩等众多网站的用户信息也被泄露了。当然这只是黑客门放出的一部分信息,只是冰山一角,不过管中窥豹可以知道现在互联网是多么的不安全,多么的没有隐私,翻开手机看看手机里的那些垃圾短息吧!还有接到的那些很多莫名其妙的电话。 毋庸置疑互联网时代安全是一个大问题,但是互联网的安全性和开放性始终一对矛盾,在一个开发的系统中想实现绝对的安全似乎是不可能的。在2011年的尾巴上的这次信息泄露事件,从另一侧面来看反而是一件好事,无论对于网站开发人员还是最终用户,大家的安全意识应该在这次事件中有一个提高。 如何保证信息的安全? (1) 加密算法的选择 MD5、SHA、Bcrypt() 、PHK、SRP等究竟应该选择哪一个算法比较安全。这里做了一个关于Bcrypt 、PHK、SRP的讨论,作者指出一个越快的加密算法越不安全,快即意味着破解或者攻击所需要的时间也会减少,所以选择加密算法加密速度是一个考虑的因素,作者最后推荐的加密算法是Bcrypt。 牛逼、并且最靠谱的方法可能是自己开发一个加密算法、当然开发的算法强度至少要达到MD5,然后要严格保密这种加密算法(这又是个问题),那么被破解的概率就要小很多了。 还有一点就是选择常用的加密方法,虽然是一个笨得思路,但也许能起到一些作用。毕竟现在最完备的字典应该是MD5的,如果采用非MD5的加密方法,那么被字典攻击的时间消耗就要更长一些。 更多关于加密算法选择的讨论: (PHP) SHA1 vs md5 vs SHA256: which to use for a PHP login? How To Safely Store A Password (2)如何加密 对于用户密码来说一般都是单向加密,加密时一定要加salt,而且要每一个用户一个salt,这样就会大大的增加字典破解的难度,如果选用MD5这种快速加密方法,推荐至少加密两次。 (3)强制用户使用复杂密码,这一招也很有用 用户应该怎样管理自己的密码 2009年的时候写过一篇关于密码管理的文章,这里不再重复了。 关于安全问题的讨论 How do you use bcrypt for hashing passwords in PHP? 谈谈近期的安全事件 相关网站 OWASP WooYun PS: 今天又发现天涯4000万的用户数据,又是明文存储。不过事件的发展越来越阴谋论了,互联网在这里真好玩。(update: 2011-12-25) [...]

    306 阅读 | 没有评论
    2011年12月22日 | 归档于 LAMP
    标签: CSDN, 安全
  • SQL中LIKE的另类玩法

    设想一个场景,我有个关键词屏蔽词库(应该很多网站都有吧),所有的关键词都存储在MySQL中,怎样查询某个字符串是否含有屏蔽关键词? 比如我们有一个屏蔽词 tom,要屏蔽任何含有tom的词语。 通常情况下LIKE这样用 SELECT * FROM `table` WHERE field LIKE ’%字符串%’ 下面我们这样玩,来解决上面的问题 SELECT * FROM `table` WHERE ‘字符串’ LIKE CONCAT(‘%’,field,’%’) PS: 这让我想起了初中时数学课中经常用来做几何证明的逆向思考方式。

    220 阅读 | 没有评论
    2011年12月21日 | 归档于 LAMP
    标签: MySQL
  • seajs 使js开发模块化

    seajs一个js类库,主要实现对js的模块化开发。 对于一个大项目或者是一个需要团队协作的项目,模块化开发 可以使得对代码的管理更规范和高效。seajs就是为了满足这种需求来的。 不过我个人可能会更需要js可以按需加载,因为有些类库不是所有的页面都 需要的,我的预期是js类库只有在需要的时候才去加载。 seajs可以通过require.async来实现按需加载。 最近在关注HTML5、CSS3的相关内容,这两个东西确实会给我们带来很不一样的体验。 还有js也很活跃,后端出了nodejs,前段有各种基础类库,还有MVC框架。 还有在js上发展起来的新语言 coffee script和dart,令人目不暇接。 确实很多东西(以论坛为主的网站将如何转型?)需要从底层变革一下了,因为他们周围的东西已经变了。 矛盾促使了这样的变革和发展。 更多内容:seajs.com

    306 阅读 | 没有评论
    2011年12月11日 | 归档于 LAMP
    标签: JavaScript, seajs
  • 在什么场景下使用闭包?

    在需要把逻辑封装到自己的范围内的情况下,闭包会十分有用。重构旧代码以进行简化并提高可读性就是这样一个例子。查看以下示例,该示例显示了在运行一些 SQL 查询时使用的记录程序。 12345678910//记录 SQL 查询的代码                $db = mysqli_connect("server","user","pass"); Logger::log(’debug’,'database’,'Connected to database’); $db->query(’insert into parts (part, description) values (‘Hammer’,'Pounds nails’); Logger::log(‘debug’,'database’,'Insert Hammer into to parts table’); $db->query(‘insert into parts (part, description) values       (’Drill’,'Puts holes in wood’); Logger::log(’debug’,'database’,'Insert Drill into to parts table’); $db->query(’insert into parts [...]

    265 阅读 | 没有评论
    2011年12月7日 | 归档于 LAMP
    标签: PHP, 闭包
  • 【转载】浅谈PHP中的Session机制

    做web开发,必然会涉及到Session,这是由于http协议本身是无状态的(每次响应都是独立的,彼此间没有联系),所以如果需要在页面跳转间保持某个用户的身份,就要在每次连接时告诉服务器端你的唯一标示号,即Session ID。这样,服务器端便可通过Session ID得到所需的数据。 在PHP中,Session是通过$_SESSION这个全局变量来set/get的,不过在使用之前要先初始化。初始化是通过session_start函数(如果php.ini中将session.auto_start设为1,则会自动初始化),之后PHP会为request自动生成一个唯一随机数作为Session ID,生成算法默认提供了MD5 (128 bits) 和SHA-1 (160 bits),由php.ini中session.hash_function设定。其实也可以自定义,比如在随机数基础上将来访者的IP地址也加入到算法中,像CodeIgniter1.7.2中代码: 12345678$sessid = ”; while (strlen($sessid) < 32) {     $sessid .= mt_rand(0, mt_getrandmax()); } // To make the session ID even more secure we’ll combine it with the user’s IP $sessid .= $this->CI->input->ip_address(); $sessid = md5(uniqid($sessid, TRUE)) 生成的ID存放在服务器的某一目录下,这由php.ini中session.save_path配置。如果你选择默认的文件式session存储,那么可能会遇到大量session文件导致IO性能下降,这个问题可以通过调节save_path来优化,具体请看大量php session临时文件带来的服务器效率问题。如果要在多个服务器中同步session id,你可以将其存放在数据库或共享缓存中。这需要你自定义一系列Session的读写方法,并在调用session_start函数前先设定好,以下面代码为例(来自php document中的一段示例代码): 123456CREATE TABLE `ws_sessions` [...]

    363 阅读 | 没有评论
    2011年11月28日 | 归档于 LAMP
    标签: PHP, SESSION
  • placeholder在非标准(IE)浏览器的实现

    题目写得好拗口啊:) placeholder是HTML5的一个新特性,今天在考虑如何提示表单输入内容格式的时候,左思右想还是把提示内容放在input中最好。刚开始还不知道有placeholder这个东西,想要找一些js实现同样的效果,不久就发现原来HTML5中有placeholder这个标签属性,恰好支持这种效果。 高兴了没有一会,万恶的IE就把我拉回了现实。 方法就是比问题要多,找了N多用JS实现的placeholder的效果,最后发现一个相对完美的实现。 源码: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293// HTML5 placeholder plugin version 1.01 // Copyright (c) 2010-The End of Time, Mike Taylor, http://miketaylr.com // MIT Licensed: http://www.opensource.org/licenses/mit-license.php // // Enables cross-browser HTML5 placeholder for inputs, by first testing // for a native implementation before building one. // // // USAGE: //$(‘input[placeholder]‘).placeholder(); // <input type="text" placeholder="username"> (function($){   [...]

    415 阅读 | 没有评论
    2011年11月26日 | 归档于 LAMP
    标签: HTML5, JavaScript
‘LAMP’ 分类的存档