hexo文章密码访问的"破解"方法

  很多hexo用户都用到了js阻塞机制来实现文章密码访问,这里谈谈这种方式的不安全。

前言

  昨天突然想用博客来写写生活类的随笔,但是又想只让自己看到,设置个访问密码应该是个不错的选择,但是hexo生成的博客是纯静态的,没有WordPress等动态博客这么方便的设置密码。于是到网上找了一下,发现了一位网友利用js来对文章进行一个简单的加密访问。 原文在这里 或者直接看我搬运的一部分:链接
  可以看到,这种加密是利用js的阻塞机制:

当页面中有调用alert();函数的时候,整个页面会停止运行,直到你点击确定之后,页面的中的代码才会继续执行下去。我们这里需要的也是这样一个假象,阻止整个页面的渲染,直到你输入了正确的密码才能让页面继续渲染实际的文章。可是alert只有提醒的功能,没有输入的功能,所以这里要用到的是promt函数。

阻止页面的渲染(不是很懂js的我,表示这种思路很聪明哈)
  但是转念一想,这种方法是不是太容易被”破解”了,通过阻止页面渲染来实现”加密”,不代表页面的源代码不能访问(毕竟这个script中的密码是以明文的形式写在源代码中间的),这样的话我们是不是能够通过网页源代码来看到密码呢?

实现

  这里联想到Linux下的curl工具浏览网页是直接显示网页源代码的,于是直接通过

1
curl -L www.iots.vip (已加密的文章地址) # 这里的 -L 是解决部分网站 30X 跳转的问题的  

回车换行查看
hexo文章加密访问-1
可以看到密码以明文形式表示出来了。
当然,类似于chinaz等站长工具中的模拟蜘蛛爬取指定页面等功能也能查看网页源代码。链接

后记

  可以看出,这种加密方法是非常不安全的(实际上,静态网站怎么加密也没多大意义),真正的安全的方法是在网站服务器端对访问加入一个认证步骤。(这类教程网上很多,很容易搜索到,比如Apache认证访问、Nginx认证访问等关键字),所以一些重要的或者是隐私的东西还是不要想着靠这种方式来加密了,还有一个细思极恐的问题就是,这种方式加密对搜索引擎也是无效的,因为它抓取的就是源代码,因此,需要在robots.txt中限制一下特定URL或目录的抓取,可以点这里