XssAPP开源,Xss跨站脚本攻击测试平台(JAVA开发)
发布时间:2016-05-29 03:35编辑:admin 浏览(2435)类别:编程开发
XssAPP 一套针对Xss跨站脚本攻击的专业测试平台
开源日期:2016-05-29
开发者:WebSOS
开发时间:2015年下半年
开发语言:JAVA
使用技术:Spring Hibernate 反射技术
说明:本程序源码一切权益归WebSOS所有,他人不得随意修改与转卖,本程序仅做技术交流,切勿用于非法途径
链接: http://pan.baidu.com/s/1kUWVkXp 密码: 885i
文档说明:
XssAPP系统设计说明书
(v1.0)
文 档 信 息 |
文档名称: |
Xss平台系统需求设计说明书 |
电子文档: |
Xss平台系统需求设计文档 /Microsoft WORD 2000 |
版本号: |
1.0 |
密级: |
保密 |
文档状态: |
□ 草 稿 ■ 正式发布 □ 正在修改 |
编写人: |
WebSOS |
日期: |
2016-1-29 |
|
|
|
|
目 录
1 总则... 5
1.1 编写目的... 5
1.2 读者对象... 5
1.3 业务背景... 5
1.4 平台简介... 5
1.5 攻击分类... 5
1.6 扩展类型... 5
1.7 漏洞危害... 6
1.7.1 三部曲... 6
1.7.2 攻击事件... 6
1.7.3 下一代... 6
1.8 漏洞预防... 6
1.9 XSS防御规则... 7
1.9.1 No.1. 7
1.9.2 No.2. 7
1.9.3 No.3. 8
1.9.4 No.4. 8
1.9.5 No.5. 9
1.9.6 No.6. 9
1.10 业务需求... 9
1.11 技术说明... 10
1.12 术语与缩写... 10
2 概述... 10
2.1 设计目标... 10
2.2 系统局部截图... 11
3 数据表结构... 24
1) 用户信息表 user. 24
2) 模块表 module. 24
3) 项目表 project 25
4) 信封表 letter. 25
5) 信封内容表 letter_paras. 26
6) 系统设置表 setting. 26
7) 邀请码表 invite. 27
8) 后台管理表 admin. 27
9) 后台角色表 role. 27
10) 菜单表 menus. 28
11) 邮箱表 email. 28
12) 网站后缀表 suffix. 28
13) 网站静态后缀表 suffix_static. 29
1 总则
1.1 编写目的
主要基于以下目的编写此文档:
- 对整个系统项目设计阶段的任务成果形成文档。
- 对需求阶段的文档再次确认过程,对前一阶段需求没有做充分或错误的提出修改。
- 明确整个系统的功能框架和数据结构,为下一阶段的编码和测试提供参考依据。
- 明确编码规范和命名规范,统一程序界面。
1.2 读者对象
本文档的预期读者包括详细设计人员、开发人员、测试人员、项目经理及相关人员等。
1.3 业务背景
编辑
网站中包含大量的动态内容以提高用户体验,比过去要复杂得多。所谓动态内容,就是根据用户环境和需要,Web应用程序能够输出相应的内容。动态站点会受到一种名为“跨站脚本攻击”(
Cross Site Scripting, 安全专家们通常将其缩写成
XSS,原本应当是css,但为了和层叠样式表(Cascading Style Sheet,CSS )有所区分,故称XSS)的威胁,而静态站点则完全不受其影响。
1.4 平台简介
编辑
用户在浏览网站、使用 即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入 恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。许多流行的留言本和论坛程序允许用户发表包含HTML和javascript的帖子。假设用户甲发表了一篇包含 恶意脚本的帖子,那么用户乙在浏览这篇帖子时,恶意脚本就会执行,盗取用户乙的session信息。有关攻击方法的详细情况将在下面阐述。
1.5 攻击分类
编辑
人们经常将跨站脚本攻击(Cross Site Scripting)缩写为
CSS,但这会与
层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。因此有人将跨站脚本攻击缩写为
XSS。如果你听到有人说 “我发现了一个XSS漏洞”,显然他是在说跨站脚本攻击。
1.6 扩展类型
编辑
(1)持久型跨站:最直接的危害类型,跨站代码存储在 服务器(数据库)。(2)非持久型跨站:反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。(3) DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。
1.7 漏洞危害
编辑
为了搜集用户信息,攻击者通常会在有漏洞的程序中插入 JavaScript、VBScript、 ActiveX或Flash以欺骗用户(详见下文)。一旦得手,他们可以盗取用户帐户,修改用户设置,盗取/污染cookie,做虚假广告等。每天都有大量的 XSS攻击的 恶意代码出现。 Brett Moore的下面这篇文章详细地阐述了“ 拒绝服务攻击”以及用户仅仅阅读一篇文章就会受到的“自动攻击”。
1.7.1 三部曲
1.HTML注入。所有HTML注入范例只是注入一个JavaScript弹出式的警告框:alert(1)。
2.做坏事。如果您觉得警告框还不够刺激,当受害者点击了一个被注入了HTML代码的页面链接时攻击者能作的各种的恶意事情。
3.诱捕受害者。
1.7.2 攻击事件
“微博病毒”攻击事件
回顾:
2011年6月28日晚,新浪微博出现了一次比较大的XSS攻击事件。大量用户自动发送诸如:“郭美美事件的一些未注意到的细节”,“建党大业中穿帮的地方”,“让女人心动的100句诗歌”,“3D肉团团高清普通话版种子”,“这是传说中的神仙眷侣啊”,“惊爆!范冰冰艳照真流出了”等等微博和私信,并自动关注一位名为 hellosamy的用户。
事件的经过线索如下:
20:14,开始有大量带V的认证用户中招转发 蠕虫
20:30,某网站中的病毒页面无法访问
20:32,新浪微博中hellosamy用户无法访问
21:02,新浪漏洞修补完毕
1.7.3 下一代
随着 AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)技术的普遍应用,XSS的攻击危害将被放大。使用AJAX的最大优点,就是可以不用更新整个页面来维护数据,Web应用可以更迅速地响应用户请求。AJAX会处理来自 Web服务器及源自第三方的丰富信息,这对XSS攻击提供了良好的机会。AJAX应用架构会泄漏更多应用的细节,如函数和变量名称、函数参数及返回类型、数据类型及有效范围等。AJAX应用架构还有着较传统架构更多的应用输入,这就增加了可被攻击的点。
1.8 漏洞预防
编辑
从网站开发者角度,如何防护XSS攻击?
来自应用安全国际组织OWASP的建议,对XSS最佳的防护应该结合以下两种方法:验证所有输入数据,有效检测攻击;对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。具体如下:
输入验证:某个数据被接受为可被显示或存储之前,使用标准输入验证机制,验证所有输入数据的长度、类型、语法以及业务规则。
输出编码:数据输出前,确保用户提交的数据已被正确进行entity编码,建议对所有字符进行编码而不仅局限于某个子集。
明确指定输出的编码方式:不要允许攻击者为你的用户选择编码方式(如ISO 8859-1或 UTF 8)。
注意黑名单验证方式的局限性:仅仅查找或替换一些字符(如"<" ">"或类似"script"的关键字),很容易被XSS变种攻击绕过验证机制。
警惕规范化错误:验证输入之前,必须进行解码及规范化以符合应用程序当前的内部表示方法。请确定应用程序对同一输入不做两次解码。
从网站用户角度,如何防护XSS攻击?
当你打开一封Email或附件、浏览论坛帖子时,可能 恶意脚本会自动执行,因此,在做这些操作时一定要特别谨慎。建议在浏览器设置中关闭JavaScript。如果使用 IE浏览器,将安全级别设置到“高”。具体可以参照浏览器安全的相关文章。
这里需要再次提醒的是,XSS攻击其实伴随着社会工程学的成功应用,需要增强安全意识,只信任值得信任的站点或内容。可以通过一些检测工具进行 xss的漏洞检测,类似工具有亿思网站安全检测平台。针对xss的漏洞带来的危害是巨大,如有发现,应立即修复漏洞。
1.9 XSS防御规则
编辑
下列规则旨在防止所有发生在应用程序的XSS攻击,虽然这些规则不允许任意向HTML文档放入不可信数据,不过基本上也涵盖了绝大多数常见的情况。你不需要采用所有规则,很多企业可能会发现第一条和第二条就已经足以满足需求了。请根据自己的需求选择规则。
1.9.1 No.1
– 不要在允许位置插入不可信数据
第一条规则就是拒绝所有数据,不要将不可信数据放入HTML文档,除非是下列定义的插槽。这样做的理由是在理列有解码规则的HTML中有很多奇怪的context,让事情变得很复杂,因此没有理由将不可信数据放在这些context中。
directlyinascript
insideanHTMLcomment
inanattributename
<...NEVERPUTUNTRUSTEDDATAHERE...href="/test"/> inatagname
更重要的是,不要接受来自不可信任来源的JavaScript代码然后运行,例如,名为“callback”的参数就包含JavaScript代码段,没有解码能够解决。
1.9.2 No.2
– 在向HTML元素内容插入不可信数据前对HTML解码
这条规则适用于当你想把不可信数据直接插入HTML正文某处时,这包括内部正常标签(div、p、b、td等)。大多数网站框架都有HTML解码的方法且能够躲开下列字符。但是,这对于其他HTML context是远远不够的,你需要部署其他规则。
...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...
...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE...
以及其他的HTML常用元素
使用HTML实体解码躲开下列字符以避免切换到任何执行内容,如脚本、样式或者事件处理程序。在这种规格中推荐使用十六进制实体,除了XML中5个重要字符(&、<、 >、 "、 ')外,还加入了斜线符,以帮助结束HTML实体。
&-->&
<--><
>-->>
"-->"
'-- >''isnotrecommended
/-- >/forwardslashisincludedasithelpsendanHTMLentity
1.9.3 No.3
– 在向HTML常见属性插入不可信数据前进行属性解码
这条规则是将不可信数据转化为典型属性值(如宽度、名称、值等),这不能用于复杂属性(如href、src、style或者其他事件处理程序)。这是及其重要的规则,事件处理器属性(为HTML JavaScript Data Values)必须遵守该规则。
content insideUNquotedattribute
content insidesinglequotedattribute
content insidedoublequotedattribute
除了字母数字字符外,使用小于256的ASCII值HH格式(或者命名的实体)对所有数据进行解码以防止切换属性。这条规则应用广泛的原因是因为开发者常常让属性保持未引用,正确引用的属性只能使用相应的引用进行解码。未引用属性可以被很多字符破坏,包括[space] % * + , - / ; < = > ^ 和 |。
1.9.4 No.4
– 在向HTML JavaScript Data Values插入不可信数据前,进行JavaScript解码
这条规则涉及在不同HTML元素上制定的JavaScript事件处理器。向这些事件处理器放置不可信数据的唯一安全位置就是“data value”。在这些小代码块放置不可信数据是相当危险的,因为很容易切换到执行环境,因此请小心使用。
insideaquotedstring
onesideofanexpression
insideUNquotedeventhandler
insidequotedeventhandler
insidequotedeventhandler
除了字母数字字符外,使用小于256的ASCII值xHH格式 对所有数据进行解码以防止将数据值切换至脚本内容或者另一属性。不要使用任何解码捷径(如" )因为引用字符可能被先运行的HTML属性解析器相匹配。如果事件处理器被引用,则需要相应的引用来解码。这条规则的广泛应用是因为开发者经常让事件处理器保持未引用。正确引用属性只能使用相应的引用来解码,未引用属性可以使用任何字符(包括[space] % * + , - / ; < = > ^ 和|)解码。同时,由于HTML解析器比JavaScript解析器先运行,关闭标签能够关闭脚本块,即使脚本块位于引用字符串中。
1.9.5 No.5
– 在向HTML 样式属性值插入不可信数据前,进行CSS解码
当你想将不可信数据放入样式表或者样式标签时,可以用此规则。CSS是很强大的,可以用于许多攻击。因此,只能在属性值中使用不可信数据而不能在其他样式数据中使用。不能将不可信数据放入复杂的属性(如url,、behavior、和custom (-moz-binding))。同样,不能将不可信数据放入允许JavaScript的IE的expression属性值。
propertyvalue
text propertyvalue
除了字母数字字符外,使用小于256的ASCII值HH格式对所有数据进行解码。不要使用任何解码捷径(如" )因为引用字符可能被先运行的HTML属性解析器相匹配,防止将数据值切换至脚本内容或者另一属性。同时防止切换至expression或者其他允许脚本的属性值。如果属性被引用,将需要相应的引用进行解码,所有的属性都应该被引用。未引用属性可以使用任何字符(包括[space] % * + , - / ; < = > ^ 和|)解码。同时,由于HTML解析器比JavaScript解析器先运行,标签能够关闭脚本块,即使脚本块位于引用字符串中。
1.9.6 No.6
- 在向HTML URL属性插入不可信数据前,进行URL解码
当你想将不可信数据放入链接到其他位置的link中时需要运用此规则。这包括href和src属性。还有很多其他位置属性,不过我们建议不要在这些属性中使用不可信数据。需要注意的是在javascript中使用不可信数据的问题,不过可以使用上述的HTML JavaScript Data Value规则。
link anormallink
animagesource
ascriptsource
除了字母数字字符外,使用小于256的ASCII值%HH 解码格式对所有数据进行解码。在数据中保护不可信数据:URL不能够被允许,因为没有好方法来通过解码来切换URL以避免攻击。所有的属性都应该被引用。未引用属性可以使用任何字符(包括[space] % * + , - / ; < = > ^ 和|)解码。 请注意实体编码在这方面是没用的。
1.10 业务需求
1:用户对某个系统进行xss测试,需要在平台注册账户,并且新建模板>新建项目
2:新建项目后会生成模板代码入口,用户可利用入口引入代码对第三方平台进行xss跨站脚本攻击测试
3:当目标项目存在xss跨站脚本漏洞,入口地址需对用户代码所提交的参数进行收信处理
4:当系统收到xss跨站脚本信封时,要把信封内容通过email方式发送给用户预设邮箱,予以提示作用
5:用户可对模板、项目、信封、个人资料、密码进行插删改插之类管理操作
1.11 技术说明
本系统采用spring+hibernate框架编写,数据库连接池采用c3p0。缓存采用map结合timer。基于service使用AOP技术进行缓存绑定与实现。数据库采用mysql
1.12 术语与缩写
Spring一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架
Hibernate 一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库
C3P0 一个开源的JDBC 连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。
AOP Aspect Oriented Programming的缩写,意为: 面向切面编程,通过 预编译方式和运行期动态代理实现程序功能的统一维护的一种技术
XSS 跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息。
2 概述
2.1 设计目标
WEB端系统产品设计需要在技术、业务需求方面满足以下目标:
- 技术上
设计相关的系统模块和框构。
- 业务需求
在业务需求方面,满足WEB平台系统的业务需求。
2.2 系统局部截图
- 系统首页http://xssapp.com/
- 注册页面http://xssapp.com/reg.esp
- 登陆页面http://xssapp.com/login.esp
- 修改资料http://xssapp.com/user/setting.esp
- 用户首页http://xssapp.com/user/index.esp
- 项目管理http://xssapp.com/user/index.esp
- 模板管理http://xssapp.com/user/loadUserModule.esp
- 信封管理http://xssapp.com/user/loadLetters.esp
- 修改密码http://xssapp.com/user/modifyPwd.esp
- 找回密码http://xssapp.com/resetPwd.esp
- 后台页面http://xssapp.com/admin/login.esp
- 后台首页http://xssapp.com/admin/index.esp
- 后台网站基本设置
- 后台网站后缀设置
- 发信邮箱管理
- 后台项目管理
- 后台模板管理
- 后台信封管理
- 后台用户管理
- 后台邀请码管理
- 管理员账号管理
- 角色管理
- 权限管理
3 数据表结构
1) 用户信息表 user
字段名 |
字段类型 |
长度 |
可空 |
描述 |
id |
Int |
11 |
Not Null |
主键-Id-不可空 |
user_name |
varchar |
24 |
Not Null |
用户名-不可空 |
user_pwd |
varchar |
40 |
Not Null |
用户密码-不可空 |
mobile |
Varchar |
20 |
ssNull |
手机号码 |
email |
Varchar |
32 |
Null |
邮箱 |
create_time |
TIMESTRESM |
|
NOT NULL |
注册时间 |
uuid |
Varchar |
32 |
NOT NULL |
唯一标识 |
2) 模块表 module
字段名 |
字段类型 |
长度 |
可空 |
描述 |
id |
Int |
11 |
Not Null |
主键-Id-不可空 |
user_id |
Int |
11 |
Not Null |
用户ID |
title |
varchar |
128 |
Not Null |
模块标题 |
remark |
varchar |
1024 |
Null |
描述 |
content |
mediumblob |
16777216 |
Not Null |
内容 |
type |
Int |
1 |
Not Null |
类型,0系统模块,1用户模块 |
update_time |
datetime |
|
NOT NULL |
注册时间 |
3) 项目表 project
字段名 |
字段类型 |
长度 |
可空 |
描述 |
id |
Int |
11 |
Not Null |
主键-Id-不可空 |
module_id |
Int |
11 |
Not Null |
模块ID |
user_id |
Int |
11 |
Not Null |
用户ID |
title |
varchar |
128 |
Not Null |
项目标题 |
remark |
varchar |
1024 |
Null |
描述 |
update_time |
datetime |
|
Not Null |
创建/更新时间 |
uuid |
varchar |
32 |
Null |
唯一标识 |
uri |
varchar |
255 |
Null |
引入网址 |
sort_uri |
varchar |
255 |
Null |
引入短网址 |
open_mobile |
Int |
1 |
Null |
是否开启手机收信,0关闭 1开启 |
open_email |
Int |
1 |
Null |
是否开启邮箱收信,0关闭 1开启 |
filter |
过滤来源地址 |
1 |
Null |
多个来源地址逗号分隔 |
4) 信封表 letter
字段名 |
字段类型 |
长度 |
可空 |
描述 |
id |
Int |
11 |
Not Null |
主键-Id-不可空 |
project_id |
Int |
11 |
Not Null |
项目id |
ref_url |
varchar |
1024 |
Null |
来源地址 |
update_time |
datetime |
19 |
Null |
更新时间 |
uuid |
varchar |
32 |
Null |
唯一标识 |
context |
varchar |
65535 |
Null |
信封内容 |
ip |
varchar |
32 |
Null |
Ip地址 |
5) 信封内容表 letter_paras
字段名 |
字段类型 |
长度 |
可空 |
描述 |
id |
Int |
11 |
Not Null |
主键-Id-不可空 |
letter_id |
varchar |
1024 |
Null |
信封ID |
para_name |
Int |
64 |
Not Null |
参数名 |
para_value |
datetime |
19 |
Null |
参数值 |
update_time |
varchar |
32 |
Null |
更新时间 |
6) 系统设置表 setting
字段名 |
字段类型 |
长度 |
可空 |
描述 |
id |
Int |
11 |
Not Null |
主键-Id-不可空 |
site_name |
varchar |
1024 |
Not Null |
网站名称 |
keywords |
varchar |
1024 |
Not Null |
关键字 |
description |
varchar |
1024 |
Null |
苗文本 |
copyright |
varchar |
128 |
Null |
版权 |
letter_api |
varchar |
255 |
Null |
Api地址 |
open_reg |
Int |
1 |
Not Null |
开启注册0关闭,1开启,默认0 |
open_invite |
Int |
1 |
Not nul |
开启邀请码注册,0关闭,1开启 默认0 |
7) 邀请码表 invite
字段名 |
字段类型 |
长度 |
可空 |
描述 |
id |
Int |
11 |
Not Null |
主键-Id-不可空 |
invite_code |
varchar |
32 |
Not Null |
邀请码 |
status |
Int |
1 |
Not Null |
状态,0已使用,1未使用 |
user_id |
Int |
11 |
Null |
注册用户 |
update_time |
datetime |
|
Not Null |
创建/更新时间 |
exp_time |
datetime |
|
Not Null |
到期时间 |
8) 后台管理表 admin
字段名 |
字段类型 |
长度 |
可空 |
描述 |
id |
Int |
11 |
Not Null |
主键-Id-不可空 |
user_name |
varchar |
32 |
Not Null |
用户名 |
user_pwd |
varchar |
32 |
Not Null |
密码 |
role_id |
Int |
11 |
Not null |
关联role_id |
9) 后台角色表 role
字段名 |
字段类型 |
长度 |
可空 |
描述 |
id |
Int |
11 |
Not Null |
主键-Id-不可空 |
name |
varchar |
64 |
Not Null |
角色名 |
menus |
Varchar |
1024 |
Null |
菜单ID集。逗号分隔 |
10) 菜单表 menus
字段名 |
字段类型 |
长度 |
可空 |
描述 |
id |
Int |
11 |
Not Null |
主键-Id-不可空 |
title |
varchar |
64 |
Not Null |
菜单名 |
url |
varchar |
255 |
Not Null |
菜单地址 |
type |
Int |
1 |
Not Null |
菜单类型,0一级菜单,1二级菜单,默认0 |
up_id |
Int |
11 |
Not Null |
上级ID,关联本表ID |
seq |
Int |
11 |
Null |
排序。值越小越靠前 |
11) 邮箱表 email
字段名 |
字段类型 |
长度 |
可空 |
描述 |
id |
Int |
11 |
Not Null |
主键-Id-不可空 |
smtp |
varchar |
32 |
Null |
服务器 |
email |
varchar |
32 |
Null |
邮箱账号 |
password |
varchar |
32 |
Null |
密码 |
bak_smtp |
varchar |
32 |
Null |
备用服务器 |
bak_email |
varchar |
32 |
Null |
备用邮箱账号 |
bak_password |
varchar |
32 |
Null |
备用密码 |
12) 网站后缀表 suffix
字段名 |
字段类型 |
长度 |
可空 |
描述 |
id |
Int |
11 |
Not Null |
主键-Id-不可空 |
suffix |
varchar |
32 |
Not Null |
后缀 |
status |
varchar |
32 |
Not Null |
状态,0关闭,1开启,2默认 |
13) 网站静态后缀表 suffix_static
字段名 |
字段类型 |
长度 |
可空 |
描述 |
id |
Int |
11 |
Not Null |
主键-Id-不可空 |
suffix |
varchar |
32 |
Not Null |
后缀 |
4 项目源代码引导说明
- 源代码结构截图
- Spring mvc配置
- 数据源配置
- 事物管理
- Quartz定时器配置
- AOP缓存实现
- 后台权限拦截
- 源代码类说明
4.1.1.1 com.xss.web.util工具类集合
com.xss.web.util包
CommonUtils 公共util操作方法封装工具
Constants 系统枚举或常量存放点
DateUtils 日期操作工具
EmailSenderUtil 邮件发送工具
EncryptionUtil 密码加密工具
FileUtils 文件读写工具
HibernateConfigurationUtil hibernate常用操作工具
HqlUtil hql语句转换工具
HTMLSpirit html操作工具
HttpUtil http请求工具
IPager 分页工具,接口
JsonUtil json测试工具
JSONWriter json转化工具
JUUIDUtil uuid生成工具
MsgEntity 系统消息容器
PropresUtil 对象操作工具
ReqJsonUtil 基于Gson的json操作工具
RequestUtil 请求转化工具
SpringContextHelper spring对象池获取工具
StringUtils 字符串操作工具
UploadUtil 文件上传工具
VerificationCodeUtil 验证码生成工具
4.1.1.2 com.xss.web.annotation 注解合集
CacheHandle 添加缓存注解
DelCacheHandle 删除缓存注解
UpdateCacheHandle 更新缓存注解,暂未使用
4.1.1.3 com.xss.web.aspect aop层
CacheAspect 基于AOP的缓存实现类
4.1.1.4 com.xss.web.base基础公用层
com.xss.web.base.cache 基础缓存实现
com.xss.web.base.dao hibernate持久层
com.xss.web.base.page 分页对象实现
com.xss.web.base.thread系统公用线程池
com.xss.web.base.wrapper xss跨站脚本防御容器
4.1.1.5 com.xss.web.cache 缓存层
com.xss.web.cache.base 基础缓存
AdminCache 后台用户类
EmailCache 发信邮箱操作类
InviteCache 邀请码操作类
LetterCache 信封管理类
MenuCache 后台菜单类
ModuleCache 模板类
ProjectCache 项目类
RoleCache 后台角色类
SettingCache 网站设置类
SuffixCache 网站后缀操作类
UserCache 用户类
4.1.1.6 com.xss.web.controllers controller层
com.xss.web.controllers.base公用controller父类
AdminController 后台管理操作类
Controller 前台首页与周边功能类
Scontroller 收信类
UserController 前台会员操作类
4.1.1.7 com.xss.web.entity 工具对象与系统对象类
HqlEntity hql对象
HttpEntity http对象
MsgEntity 系统消息机制容器
PropresEntity 反射常用对象
Record map封装容器
SimpleConcurrentMap map封装缓存容器
ThisWhere hql where条件对象
Where hql where条件对象
4.1.1.8 com.xss.web.filter 过滤器层
AdminFilter 后台管理过滤器,包含权限拦截,菜单加载等
BaseFilter 基础信息过滤器,包含项目基础地址加载
SuffixFilter 后缀过滤器,实现系统可控设置后缀或伪静态
UserFilter 用户过滤器,用户身份拦截
XssFilter 预防xss跨站脚本攻击对本系统造成的隐患
4.1.1.9 com.xss.web.model 系统实体对象 (hibernate生成)
略
4.1.1.10 com.xss.web.service service层
略
4.1.1.11 com.xss.web.task 定时器
EmailInitTask 发信邮箱状态激活定时器