201321123115--章清斌开题报告

开题报告

----章清斌


1.选题的目的和意义

集美大学计算机工程学院网络安全协会:由几个对网络安全感兴趣的同学自发组织,并得到院领导支持的一个学习交流协会。协会旨在宣传网络安全知识、学习网络安全知识,为同学提供网络安全相关竞赛资讯和网络安全相关公司的就业指导。

为方便网络安全协会学习和宣传网络安全知识,为同学们提供网络安全相关竞赛咨询和网络安全相关岗位的就业指导,故做此网络安全协会门户网站设计。网站主要分为后台管理端和用户端,管理员通过后台管理端,可以发布教程,发布活动公告,还可以审核成员注册状态以及禁用非法用户。用户端可以访问网站首页,未登录用户只能查看初级教程,和校级活动公告。登录用户除了可以看所有教程和公告外还可以免登录进入协会BBS平台和CTF平台。


2.主要研究内容

  • SpringMVC:
    如何使用SpringMVC框架构建一个网站,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。
    Spring优点:
    1.低侵入式设计,代码污染极低
    2.独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺
    3.Spring的DI机制降低了业务对象替换的复杂性,提高了组件之间的解耦
    4.Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用
    5.Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问
    6.Spring并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部

  • 单点登录:经过登录验证后,可以免登录进入协会CTF平台和BBS

单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。
实现单点登录说到底就是要解决如何产生和存储信任,再就是其他系统如何验证这个信任的有效性,因此要点也就以下几个:存储信任、验证信任只要解决了这两个问题,达到了上面讲的效果就可以说是SSO。

常见单点登录

1.最简单实现SSO的方法就是用Cookie,实现流程如下所示:
SSO简单实现

这个方案是把信任存储在客户端的Cookie里,这种方法虽然实现方便但立马会让人质疑两个问题:

Cookie不安全

不能跨域免登

对于第一个问题一般都是通过加密Cookie来处理,第二个问题是硬伤,其实这种方案的思路的就是要把这个信任关系存储在客户端,要实现这个也不一定只能用Cookie,用flash也能解决,flash的Shared Object API就提供了存储能力。


2.大型系统会采取在服务端存储信任关系的做法,实现流程如下所示: ![此处输入图片的描述][2] 这个方案就是要把信任关系存储在单独的SSO系统(暂且这么称呼它)里,说起来只是简单地从客户端移到了服务端,但其中几个问题需要重点解决:

①、如何高效存储大量临时性的信任数据

②、如何防止信息传递过程被篡改

③、如何让SSO系统信任登录系统和免登系统

对于第一个问题,一般可以采用类似与memcached的分布式缓存的方案,既能提供可扩展数据量的机制,也能提供高效访问。对于第二个问题,一般采取数字签名的方法,要么通过数字证书签名,要么通过像md5的方式,这就需要SSO系统返回免登URL的时候对需验证的参数进行md5加密,并带上token一起返回,最后需免登的系统进行验证信任关系的时候,需把这个token传给SSO系统,SSO系统通过对token的验证就可以辨别信息是否被改过。对于最后一个问题,可以通过白名单来处理,说简单点只有在白名单上的系统才能请求生产信任关系,同理只有在白名单上的系统才能被免登录。


3.通过第二种方案的演变,可以使用发放票据的方式实现websso登录: ![此处输入图片的描述][3] 通过第三种方式,客户端只做票据的发放和获取,不涉及用户信息传输,用户信息均可交给子系统和SSO系统之间处理,更有效保护用户隐私。
最初我考虑的方式同第一种,功能如下: ![此处输入图片的描述][4] 初步计划是采用这种方式,如果时间允许,将会考虑采用第三种方式。
  • MySQL:
    使用MySQL作为存储数据库,以及一些ORM研究,数据量小的话,为了加快进度也有可能采用JDBCTemplate
    并发量并不大,所以这方面暂时不需要考虑太多。

3.完成设计(论文)的条件、方法及措施,包括实验设计、调研计划、资料收集、参考文献等内容

环境部署

  • Server:服务器端采用两台Linux服务器,环境为Jre1.7(java运行环境),MySQL5.6(存储数据库),Tomcat 7.0(动态服务器),Nginx1.8(静态服务器)。开发和功能测试阶段可能会使用VmWare,之后上线将采用阿里云主机。
  • Client:Firefox浏览器、Google Chrome浏览器、360 浏览器等各大主流支持HTML5浏览器,不会考虑在IE做兼容测试
  • 开发端:本机Windows 10,jdk1.7&1.8,Tomcat7.0&8.0,MySQL5.7,开发中不采用静态服务器,图片、CSS、JS等静态资源先通过Tomcat传输

资料收集


4.设计(论文)的进程安排(含进度计划和预期成果)

进度安排

计划任务 预计完成日期
工程底层搭建 3.22
数据库设计及文档 3.22
后台开发 4.5
前端UI设计 4.10
开发接口并与前端对接 4.15
单点登录实现 4.25
测试并修改 5.5

功能图
主要功能


UE设计
点此查看在线分享页
这个原型只是个大概,具体页面做到时还会细化


UI设计
这个对我来说难度有点大,凭感觉怎么布局就怎么布局吧

posted @ 2017-03-20 17:29  zhqb  阅读(394)  评论(8)    收藏  举报