利用AJAX隐藏网站程序结构
2017-11-07
AJAX即“Asynchronous Javascript And XML”(异 步JavaScript和XML),是一种创建交互式网页应用的网页开发技术。
AJAX技术可以在不重新加载整个网页的情况下,对网页的某部分进行更新。不使用 AJAX的传统网页,如果需要更新内容,必须重载整个网页页面。
AJAX的特点是页面无刷新,用户的体验非常好;使用异步方式与服务器通信,具有更加迅速的响应能力;AJAX的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担;基于标准化的并被广泛支持的技术,不需要下载插件或者小程序;AJAX不支持浏览器back按钮。
利用AJAX的特点,在编写网站程序时,隐藏网站目录结构,可以在一定程度上提高网站的安全性,增加恶意攻击的难度。
图1 网站目录结构
下面就以ASP程序进行说明,其他编程语言做法类似。
网站目录结构如图1:
CSS目录存放样式文件,JS目录存放JS脚本程序,真正实现网站逻辑的程序放在INC目录。目录名称可以自由选择,这里只是使用常规命名,网站根目录下一个login.htm文件,网页使用AJAX发送请求,使用静态文件即可。
如果没有JQUERY和AJAX功能,这个网页就什么都没有显示。通过login.js中 的onload()函 数请 求inc/login.asp文件,把返回的数据传给divcontent.innerhtml属性,从而显示出用户登录界面。这时,如果通过右键查看源文件,只能看到Login.htm文件的内容,而看不到输入姓名、登录密码等文本框的内容。
Inc/login.asp文件与普通网页文件是一样的,只不过缺少了HTML头部内容,使用常见的网页编辑程序就可以完成编写,然后去掉头尾部分即可。
由于Inc/login.asp文件的”btn1”按钮 onclick事件绑定btnclk()函数,点击“登录”按钮时,访问inc/chklogin.asp文件,进行身份验证,如果通过身份验证,执行 display(2),访问inc/ t_ tbStruc.asp文件,并将结果界面返回给divcontent.innerhtml属性,从而引起界面发生改变,这时,如果通过右键查看源文件,同样只能看到Login.htm文件的内容,而看不到inc/ t_ tbStruc.asp文件的内容。
无论访问inc目录下的什么文件,都是通过AJAX访问,从而实现部分网页更新,网页的功能只与当前的界面与JS脚本相关,网页相当于一台状态机。无论当前网页是什么状态,按“F5”刷新页面都会回到“login.htm”界面。如果查看网页源代码则只能看到首页的简单代码,从而达到了隐藏网站程序结构的目的,提高了网站的安全性。
通过对display(page)函数switch分支来进行扩充,以适应不同的网页请求。由于AJAX使用的是UTF-8编码,所以有必要将所有文件保存为UTF-8文件格式,HTML文件头则指明了输出编码为UTF-8,以防出现乱码。
整个网站程序开发测试完毕后,通过对JS脚进行压缩,去除空格和回车,然后再对外发布,增加脚本的阅读难度,进一步提高脚本代码的安全性。这时,外部人员如果想了解网站的运行逻辑及结构,只能通过分析捕获JS脚发送及返回的数据推测得到。