前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自己写的加密网页,与百度网盘私密很相似,需要密码才能访问(原创)

自己写的加密网页,与百度网盘私密很相似,需要密码才能访问(原创)

作者头像
SpiritLing
发布2018-04-16 16:12:31
2.1K4
发布2018-04-16 16:12:31
举报
文章被收录于专栏:SpiritLingSpiritLing

题记:

  1. 马上就要招聘了,所以我打算放置简历在自己的网页上,但是又不想给除了招聘的人,或者我指定的人外看,所以我需要对网页页面加密
  2. 我找了许多资料,查看了许多所谓的页面加密,但是有60%左右都是网页锁,采用第三方插件,而且只能在某个游览器某个账号下才能实现
  3. so,我只能自己研究解决了,这个时候有人给我百度网盘分享一个文件,是需要输入密码的,于是我发现这个就是我需要的,于是我开始研究百度网盘私密分享的原理

简易分析百度网盘:

1、先将所有cookie清空,账号取消登录

2、打开chrome,输入分享的链接,在跳转链接之前,打开开发者选项,监控文件变化

3、敲击回车,发现url链接发生变化

4、url从 /s/1L... 变为 /share/init?surl=Lrw...

5、这时候看network中加载的文件变成302状态

6、302代表重定向,意思是原来URL重定向至新的地址,也就是说,百度网盘服务器那边判断你这个分享链接没有输入过密码,也就没存储cookie,所以原本访问的页面被重定向至新的密码页

7、这时候我们输入正确密码,重新加载分享链接,发现返回正确的html,和200状态

8、并且会发现cookie中存入很多内容,并且页面在访问后端时,会自动携带cookie(最近一段时间我一直在用localstorage,所以忘了cookie,可以自动携带)

所以通过上分析,发现主要存于cookie内容中,实现的加密访问

下面就是我写的加密网页原理(我使用的是nodejs,ejs模板,express),因为后端可以用好多种去写,这里只写思路,不写具体代码

前期准备工作,必须有个加密路径的数据表

id

path

password

plaintext

random_code

time

一般为uuid

请求的路径,根据自己喜好写,我的就是 /a.html

sha256加密,字符串为明文密码连接上id和随机码

明文密码不进行单向加密

随机码随机的一组大小写字母加数字

创建时间

1、当人们访问a.html,也就是加密不想让访问的页面,因为页面会自动携带cookie

2、所以我们在后端拿到cookie,和请求路径时,然后进行数据库对比,这里有个问题,如果只有HTML加密,则先判断下请求的是html还是其他的,可以减少查询

3、如果在表中找到这个请求路径,则查看cookie中是否有id=password这个数据,有的话就直接返回请求的html文件

4、如果不存在数据,则返回渲染的输入密码的html,自己想办法把原来路径放入输入密码html,输入正确密码后好跳转

5、输入密码,ajax请求,通过输入的明文密码,以及id和数据库中的随机码,变为字符串连接起来,和password比较,或者直接比较明文密码是否相同

6、一旦正确,为了安全起见,返回加密后的password,也就是密文

7、在密码html的js中,将得到的密文和id存入cookie中,跳转到原来访问的页面

8、这个时候有cookie了,然后对比成功,返回a.html文件

以上只是我的初期测试写法,也许有更好的,和更优化的方法,欢迎指正

本文可以随意转载分享,但是请标明出处

下面为测试图片

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档