MonitorSecurityStatus.jsp
20.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.*,java.io.*,weaver.security.classLoader.ReflectMethodCall,java.util.regex.*,java.util.concurrent.*,weaver.hrm.*,weaver.filter.SecurityCheckList" %>
<jsp:useBean id="xssUtil" class="weaver.filter.XssUtil" scope="page"></jsp:useBean>
<%
response.setHeader("cache-control", "no-cache");
response.setHeader("pragma", "no-cache");
response.setHeader("expires", "Mon 1 Jan 1990 00:00:00 GMT");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>安全功能开启一览</title>
<style type="text/css">
*{
font-family: 微软雅黑;
mso-hansi-font-family: 微软雅黑
}
.listTable{
width:100%;
border:1px solid #dcdcdc;
border-collapse:collapse;
}
.listTable th{
height:40px;
background-color:#f0f3f4;
}
.listTable th, .listTable td{
border:1px solid #dcdcdc;
font-size:12px;
color:#384049;
}
.listTable td{
height:50px;
text-align:left;
padding-left:10px;
padding-right:10px;
}
</style>
<script type="text/javascript">
function checkSecurityList(obj){
document.getElementById("msg").innerHTML="正在执行安全功能开启检查...";
document.getElementById("shadow").style.display = "block";
setTimeout(function(){
location.href="MonitorSecurityStatus.jsp?src=refresh";
},1000);
}
function fixMethod(i){
document.getElementById("msg").innerHTML="正在启用...";
document.getElementById("shadow").style.display = "block";
setTimeout(function(){
location.href="MonitorSecurityStatus.jsp?src=fix&i="+i;
},500);
}
</script>
</head>
<body style="margin:0;">
<div id="shadow" style="display:none;background-color:#eaeaea;filter:alpha(opacity=70); -moz-opacity:0.7; opacity:0.7;position:absolute;width:100%;height:100%;text-align:center;line-height:100%;">
<div id="msg" style="margin-top:40px;width:180px;line-height:30px;height:30px;color:#0B84E0;font-size:14px;margin-right:auto;margin-left:auto;"></div>
</div>
<div style="width:100%;height:36px;"> </div>
<div style="margin-left:auto;margin-right:auto;width:80%;margin-top:36px;min-height:400px;text-align:center;">
<div style="height:52px;border-bottom:1px solid #dcdcdc;">
<span onclick="javacript:checkSecurityList(this);" style="display:inline-block;height:32px;width:82px;cursor:pointer;background-color:#52be7f;color:white;color:white;line-height:32px;" onclick="checkSecurityList(this)">刷新</span>
</div>
<%
User user = HrmUserVarify.getUser (request , response) ;
if(user==null){
response.sendRedirect("/login/Login.jsp");
return;
}
if(!"sysadmin".equals(user.getLoginid())){
response.sendRedirect("/notice/noright.jsp");
return;
}
String operation = xssUtil.null2String(request.getParameter("src"));
SecurityCheckList scl = new SecurityCheckList();
if(operation.equals("refresh")){
xssUtil.initRules(true);
}else if(operation.equals("fix")){
int i = xssUtil.getIntValue(xssUtil.null2String(request.getParameter("i")));
ReflectMethodCall rmc = new ReflectMethodCall();
rmc.call("weaver.security.core.SecurityCore","fixSecurityConfig",new Class[]{int.class},new Object[]{new Integer(i)});
}
int no = 1;
%>
<div style="margin-top:20px;max-height:600px;overflow:auto;">
<table class="listTable">
<colgroup>
<col width="5%"/>
<col width="30%"/>
<col width="25%"/>
<col width="30%"/>
<col width="5%"/>
<col width="5%"/>
</colgroup>
<thead>
<th>序号</th>
<th>检查项</th>
<th>说明</th>
<th>启用方式</th>
<th>状态</th>
<th>启用</th>
</thead>
<tbody>
<tr>
<td><%=no++%></td>
<td>是否开启了安全防火墙</td>
<td>检查WEB-INF/weaver_security_config.xml中的status是否为1</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<status>为1<br/>
<code><i><font color="red">
<status>1</status>
</font></i></code>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"><%=xssUtil.enableFirewall()?"":"<span style='display:inline-block;margin-left:auto;margin-right:auto;text-align:center;cursor:pointer;border:1px solid #d6d6d6;color:#2c91e6;width:54px;height:26px;line-height:26px;' name='isLoginCheck' id='isLoginCheck' onclick='fixMethod(0)'>启用</span>"%></td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了登录保护</td>
<td>检查WEB-INF/weaver_security_config.xml中的is-login-check是否为true</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<is-login-check>为true<br/>
<code><i><font color="red">
<is-login-check>true</is-login-check>
</font></i></code>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.isLoginCheck()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.isLoginCheck()?"":"<span style='display:inline-block;margin-left:auto;margin-right:auto;text-align:center;cursor:pointer;border:1px solid #d6d6d6;color:#2c91e6;width:54px;height:26px;line-height:26px;' name='isLoginCheck' id='isLoginCheck' onclick='fixMethod(1)'>启用</span>"%></td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了数据库保护</td>
<td>检查WEB-INF/weaver_security_config.xml中的skip-rule是否为false</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<skip-rule>为false<br/>
<code><i><font color="red">
<skip-rule>false</skip-rule>
</font></i></code>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && !xssUtil.getIsSkipRule()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && !xssUtil.getIsSkipRule()?"":"<span style='display:inline-block;margin-left:auto;margin-right:auto;text-align:center;cursor:pointer;border:1px solid #d6d6d6;color:#2c91e6;width:54px;height:26px;line-height:26px;' name='getIsSkipRule' id='getIsSkipRule' onclick='fixMethod(2)'>启用</span>"%></td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了ESAPI提供的数据库保护功能</td>
<td>检查WEB-INF/weaver_security_config.xml中的esapi-sql是否为true</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<esapi-sql>为true<br/>
<code><i><font color="red">
<esapi-sql>true</esapi-sql>
</font></i></code>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.isUseESAPISQL()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;">
<%=xssUtil.enableFirewall() && xssUtil.isUseESAPISQL()?"":"可能对功能有一定影响,请谨慎开启,需修改配置文件手动启用"%>
</td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了页面保护</td>
<td>检查WEB-INF/weaver_security_config.xml中的must-xss是否为true</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<must-xss>为true<br/>
<code><i><font color="red">
<must-xss>true</must-xss>
</font></i></code>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.getMustXss()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"><%=xssUtil.getMustXss()?"":"<span style='display:inline-block;margin-left:auto;margin-right:auto;text-align:center;cursor:pointer;border:1px solid #d6d6d6;color:#2c91e6;width:54px;height:26px;line-height:26px;' name='getMustXss' id='getMustXss' onclick='fixMethod(3)' value='启用'>启用</span>"%></td>
</tr>
<!--<tr>
<td><%=no++%></td>
<td>是否开启了ESAPI提供的页面保护功能</td>
<td>检查WEB-INF/weaver_security_config.xml中的esapi-xss是否为true</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<esapi-xss>为true<br/>
<code><i><font color="red">
<esapi-xss>true</esapi-xss>
</font></i></code>
</td>
<td><%=xssUtil.enableFirewall() && xssUtil.isUseESAPIXSS()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td><%=xssUtil.isUseESAPIXSS()?"":"<input type='button' name='isUseESAPIXSS' id='isUseESAPIXSS' onclick='fixMethod(31)' value='启用'></input>"%></td>
</tr>-->
<tr>
<td style="text-align:center;"><%=no++%></td>
<td>是否配置了500错误页面</td>
<td>检查WEB-INF/weaver_security_config.xml中的sys-debug是否为false</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<sys-debug>为false<br/>
<code><i><font color="red">
<sys-debug>false</sys-debug>
</font></i></code>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall()&&scl.is500PageConfig()?"<font style='color:#52be7f;font-weight:bold;'>正常</font>":"<font style='color:#e84c4c;font-weight:bold;'>异常</font>"%></td>
<td style="text-align:center;"><%=scl.is500PageConfig()?"":"<span style='display:inline-block;margin-left:auto;margin-right:auto;text-align:center;cursor:pointer;border:1px solid #d6d6d6;color:#2c91e6;width:54px;height:26px;line-height:26px;' name='isResetCookie' id='isResetCookie' onclick='fixMethod(14)'>启用</span>"%></td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了cookie过期功能</td>
<td>检查WEB-INF/weaver_security_config.xml中的is-reset-cookie是否为true</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<is-reset-cookie>为true<br/>
<code><i><font color="red">
<is-reset-cookie>true</is-reset-cookie>
</font></i></code>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.isResetCookie()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"><%=xssUtil.isResetCookie()?"":"<span style='display:inline-block;margin-left:auto;margin-right:auto;text-align:center;cursor:pointer;border:1px solid #d6d6d6;color:#2c91e6;width:54px;height:26px;line-height:26px;' name='isResetCookie' id='isResetCookie' onclick='fixMethod(4)'>启用</span>"%></td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了cookie的httpOnly功能</td>
<td>检查WEB-INF/weaver_security_config.xml中的httponly是否为true</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<httponly>为true<br/>
<code><i><font color="red">
<httponly>true</httponly>
</font></i></code>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.getHttpOnly()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"><%=xssUtil.getHttpOnly()?"":"<span style='display:inline-block;margin-left:auto;margin-right:auto;text-align:center;cursor:pointer;border:1px solid #d6d6d6;color:#2c91e6;width:54px;height:26px;line-height:26px;' name='getHttpOnly' id='getHttpOnly' onclick='fixMethod(5)' value='启用'>启用</span>"%></td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了防host伪造功能(防钓鱼功能)</td>
<td>检查WEB-INF/weaver_security_config.xml中的skip-host是否为false</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<skip-host>为false<br/>
<code><i><font color="red">
<skip-host>false</skip-host>
</font></i></code><br/>
开启了该项功能后,需要配置服务器允许的所有访问方式,包括服务器内网地址、外网地址、域名、代理服务器地址到配置文件中,具体方法如下:<br/>
添加IP到指定列表的方式如下,修改WEB-INF/securityXML/weaver_security_customer_rules_1.xml文件,添加以下代码<br/>
<code><i><font color="red">
<host-list><br/>
<host>test.genomics.cn</host><br/>
<host>test.genomics.cn:80</host><br/>
</host-list><br/>
</font></i></code><br/>
其中<br/>
<host>就是服务器允许的访问方式,包括内网地址、外网地址、域名、代理服务器地址,可以配置多个<host节点;<br/>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && !xssUtil.getIsSkipHost()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && !xssUtil.getIsSkipHost()?"":"需修改配置文件手动启用"%></td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了防跨站请求攻击功能</td>
<td>检查WEB-INF/weaver_security_config.xml中的skip-ref是否为false</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<skip-ref>为false<br/>
<code><i><font color="red">
<skip-ref>false</skip-ref><br/>
</font></i></code>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && !xssUtil.getIsRefAll()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"><%=!xssUtil.getIsRefAll()?"":"<span style='display:inline-block;margin-left:auto;margin-right:auto;text-align:center;cursor:pointer;border:1px solid #d6d6d6;color:#2c91e6;width:54px;height:26px;line-height:26px;' name='getIsRefAll' id='getIsRefAll' onclick='fixMethod(7)' value='启用'>启用</span>"%></td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了WEBSERVICE限制IP访问功能</td>
<td>检查WEB-INF/weaver_security_config.xml中的enable-service-check是否为true</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<enable-service-check>为true<br/>
<code><i><font color="red">
<enable-service-check>true</enable-service-check><br/>
</font></i></code>
开启了该项功能后,需要配置允许调用webservice的所有IP地址或者网段(默认包含了内网网段可以访问调用)到配置文件中,具体方法如下:<br/>
添加IP到指定列表的方式如下,修改WEB-INF/securityXML/weaver_security_customer_rules_1.xml文件,添加以下代码<br/>
<code><i><font color="red">
<webservice-ip-list><br/>
<ip>80.123.40.12</ip><br/>
<ip>192.168.</ip><br/>
</webservice-ip-list><br/>
</font></i></code><br/>
其中<br/>
<ip>就是允许调用webservice的IP地址,可以是一个网段,也可以是一个完整的IP地址,可以配置多个<ip>节点;<br/>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.getEnableWebserviceCheck()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.getEnableWebserviceCheck()?"":"需修改配置文件手动启用"%></td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了防HTTP拆分响应漏洞功能</td>
<td>检查WEB-INF/weaver_security_config.xml中的http-sep是否为true</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<http-sep>为true<br/>
<code><i><font color="red">
<http-sep>true</http-sep>
</font></i></code>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.getHttpSep()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.getHttpSep()?"":"<span style='display:inline-block;margin-left:auto;margin-right:auto;text-align:center;cursor:pointer;border:1px solid #d6d6d6;color:#2c91e6;width:54px;height:26px;line-height:26px;' name='getHttpSep' id='getHttpSep' onclick='fixMethod(9)' value='启用'>启用</span>"%></td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了系统超时功能</td>
<td>检查WEB-INF/weaver_security_config.xml中的is-check-session-timeout是否为true</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<is-check-session-timeout>为true<br/>
<code><i><font color="red">
<is-check-session-timeout>true</is-check-session-timeout>
</font></i></code>
<br/><br/>
超时时间配置方法:<br/>
添加或者修改WEB-INF/weaver_security_config.xml中的<session-timeout>为指定时间(单位为分钟,默认为30分钟)<br/>
<code><i><font color="red">
<session-timeout>30</session-timeout>
</font></i></code>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.isCheckSessionTimeout()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.isCheckSessionTimeout()?"":"<span style='display:inline-block;margin-left:auto;margin-right:auto;text-align:center;cursor:pointer;border:1px solid #d6d6d6;color:#2c91e6;width:54px;height:26px;line-height:26px;' name='isCheckSessionTimeout' id='isCheckSessionTimeout' onclick='fixMethod(10)' value='启用'>启用</span>"%></td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了拦截攻击源IP的功能</td>
<td>检查WEB-INF/weaver_security_config.xml中的enable-forbidden-ip是否为2或者3</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<enable-forbidden-ip>为2或者3<br/>
<code><i><font color="red">
<enable-forbidden-ip>2</enable-forbidden-ip>
</font></i></code>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.isEnableForbiddenIp()>1?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.isEnableForbiddenIp()>1?"":"可能有一定的误报,请谨慎开启,需修改配置文件手动启用"%></td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了log文件、数据库连接访问权限控制的功能</td>
<td>默认开启,不可关闭。可以添加指定的资源到控制列表中。</td>
<td>
添加资源到指定列表的方式如下,修改WEB-INF/securityXML/weaver_security_customer_rules_1.xml文件,添加以下代码<br/>
<code><i><font color="red">
<forbidden-url><br/>
<allow-users><br/>
<user>sysadmin</user><br/>
</allow-users><br/>
<urls><br/>
<url>^/{1,}log/.*</url><br/>
<url>^/{1,}admin$</url><br/>
</urls><br/>
</forbidden-url><br/>
</font></i></code><br/>
其中<br/>
<user>配置可以访问这些资源的用户账号,可以配置多个<user节点;<br/>
<url>节点是配置受控的URL链接地址,可以是URL的一段,也可以是一个完整的URL,也可以使用正则表达式。
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"></td>
</tr>
<tr>
<td><%=no++%></td>
<td>是否开启了安全包更新自动提醒功能</td>
<td>检查WEB-INF/weaver_security_config.xml中的auto-remind是否为true</td>
<td>
添加或者修改WEB-INF/weaver_security_config.xml中的<auto-remind>为true<br/>
<code><i><font color="red">
<auto-remind>true</auto-remind><br/>
</font></i></code>
<br/>
<font color='red'><b>注:只有服务器具备访问https://update.e-cology.cn/时该功能才能生效</b></font>
</td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.getAutoRemind()?"<font style='color:#52be7f;font-weight:bold;'>开启</font>":"<font style='color:#e84c4c;font-weight:bold;'>未开启</font>"%></td>
<td style="text-align:center;"><%=xssUtil.enableFirewall() && xssUtil.getAutoRemind()?"":"<span style='display:inline-block;margin-left:auto;margin-right:auto;text-align:center;cursor:pointer;border:1px solid #d6d6d6;color:#2c91e6;width:54px;height:26px;line-height:26px;' name='getAutoRemind' id='getAutoRemind' onclick='fixMethod(13)' value='启用'>启用</span>"%></td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
</html>