云安全小项目


一个小的云安全练习,来自JHU 2020Fall学期Cloud Computing Security课9月到10月的作业。建立一个基于GCP和Flask的,加入一些安全保护措施的网站。

网站地址:

https://qingshan-cloud-security.ue.r.appspot.com/

GitHub地址:

https://github.com/Giotto12138/Cloud-Computing-Security

基础功能

  1. 一个基于GCP和Flask的事件管理网站。除了Google登录的页面,所有的页面都是静态的,防止传输的参数被利用来破坏安全性。
  2. 用户可以上传事件和对应的日期,或者删除该事件。
  3. 网站会事实计算每个事件距离目标日期的时间并显示,也会实时检测是否有过期事件并删除过期的。
  4. 用户可以输入完整的日期,如年-月-日,也可以只输入月-日,这样网站会默认该日期是该年的月-日,如果已过期,就设定为明年的月-日。

认证部分

  1. 所有的事件都和从属于的用户绑定。每个用户之间的事件是隔开的。当用户不在已登录状态时,用户会被自动引导到登录界面。
  2. 所有的数据传输都是使用安全的HTTPS。
  3. 网站提供一个注册页面,用户可以输入用户名和密码来注册。如果用户名已被使用,会被要求重新输入用户名。如果注册成功,用户会被立即导向主页面(事件管理页面)。
  4. 网站提供一个登录界面,用户输入用户名和密码。如果用户名和密码都正确,用户会成功登录到主页面,否则重新输入用户名和密码。
  5. 用户登录时必须拥有一个session token。session功能的实现不通过内置的库比如flask-session或flask-login。用户注册,登出时,网站也会对session进行操作。每次登录,session的有效期是一小时。
  6. 网站提供一个登出按钮在主页面。用户点击后会跳转到登录页面,同时session和cookie都会被删去。
  7. 用户的密码不会被明文保存。网站使用Bcrypt库来对密码进行哈希,然后保存到云端的数据库。
  8. 网站提供一个迁移数据函数。网站的第一个用户会获得网站之前的所有老数据(事件和日期)。该函数也可以被管理员用来迁移数据。
  9. 用户的登录状态会被实时检测。如果用户没有一个合法的session token,或者token已经过期,用户会被强制跳转到登录界面。

使用OpenID Connect来做第三方登录功能

  1. 实现OpenID Connect认证功能,并选取Google作为第三方登录平台。用户可以使用他们的Google账号来登录网站。
  2. 通过cookie的二次验证增加CSRF保护,一定程度上保障网站安全。

Author: 张庆山
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source 张庆山 !
评论
 Previous
A discussion on multiple authentication strategies A discussion on multiple authentication strategies
Imagine a remote medical treatment system. What authentication strategy is recommended? Kerberos? SAML? Mutual TLS? OpenID Connect? or Facebook Login?
2020-10-14 Qingshan Zhang
Next 
Cloud Computing Security Practice Cloud Computing Security Practice
A small cloud computing security practice from JHU 2020Fall cloud computing security course. A website based on GCP + Flask with some security measures.
2020-10-13 Qingshan Zhang
  TOC