谈谈AJAX的安全性及AJAX安全隐患
1.新的技术:假如Max想把他的站点连接到一个SQL数据库,他在Google查到了数百万的例子。AJAX技术,不管这种技术有多年轻,它仍然是出现在采购循环中相对较早的,尽管它只有很少一部分好的例子出现在网络上。为了解决一些难处理的和不必要的复杂问题,这就要求像Max那样的开发者去自主开发。Max也就不得不编写服务器端和客户端的代码,创建他自己不太确定的协议(非凡是对服务器响应来讲)。不管这些协议有多好,都将会及时表现在页面上。 copyright dedecms
2.非传统方式的设计:AJAX有一点点不同于传统设计方式,因为这样的应用程序是半客户端半服务端的。在Max的例子里,他是唯一的开发者,所以他为服务端和客户端都能够进行编码。在同一时间使用两种不同的语言(非凡是在早期阶段)进行开发将会产生一些初级的编码错误,因为他要在两端往返跳跃,对一端来讲非常好,但可能在另一端不能够胜任。即使Max有一个大的开发团队,安全编码责任也可能在服务端和客户端开发小组之间代码移交的时候发生问题。
3.太多的脚本语言:Max凭借他自己的聪明才智决定建立世界上最优秀的旅行登记工具。你从输入你现在的位置(通过邮政编码、电话区号或者GPS等等)开始登记,这时候一个AJAX请求就会被立即发送来确定你确切的位置。从那时候开始,屏幕上就会填入你所有可以利用的旅行方式,这一切甚至都是在你决定你想要去什么地方、你打算什么时候动身和你打算和谁一同去之前就完成的。
copyright dedecms
这个屏幕上的单元格和控件都布满了AJAX驱动,服务器端和客户端的脚本可能需要超过20个不同的服务器调用。你可以想像一个很小的个体服务器程序,比如findairportsbylocation.aspx 或者 determinemaxbaggageallowancebyairline.php.
织梦好,好织梦
显而易见,假如没有Max的仔细计划(比如创建多功能的“重载”JavaScript函数和服务器脚本),每一次设计他都需要创建超过40个独立的部分。更多的编程意味着会产生更多的错误和bug,意味着需要更多的时间去编写、治理、测试和更新代码。不仅如此,因为在客户端的JavaScript代码中应用了大量的这种脚本,他们在正式的程序测试中也轻易变得很健忘。 织梦内容管理系统
4.确定小部分的AJAX不会引起危害:这个站点是一个计划出行的站点,但是Max考虑的是它将马上为你提供一个显示精确位置的卫星视图,并且把你所要到达目的地的天气情况也提供给你。AJAX最大的诱惑之一看起来似乎是直到最后一刻它还在进行其它的操作,就像一个讲解员在那里解说一样,为了AJAX使用了AJAX。当Max开始尝试他的新想法时,他会逐渐尝试增加更多新的功能,完全忽视测试的需要。
织梦内容管理系统
5.不安全的通讯:每一个AJAX调用可能只回传很少数量的数据给客户端,但那些数据是私有的、保密的。Max可以编写一个便利的工具来对你的信用卡号码进行数字校验,但是假如使用纯文本代替over SSL进行发送数据会怎样呢?这是一个显而易见的问题,但是当有许多例行程序需要考虑,非凡是屏幕上其它99%的数据不是真正的机密数据时,很轻易就会忽视掉SSL的。
dedecms.com
6.服务器端访问控制:使用JavaScript程序来触发AJAX经常会掩饰一些显而易见的编码错误,服务器端访问控制就是一个例子。假设Max想参考你上次游览的一个具体目的地来为你提供你中意的旅馆,他可能会是像下面这样:
showprevioushotels.aspx?userid=12345&destination=UK copyright dedecms
这当然是非常好的,但是假如一个恶意用户把URL改成了如下所示该怎么办呢:
showprevioushotels.aspx?userid=12346&destination=%
织梦好,好织梦
他们会得到其他人最喜爱的旅馆吗?(注重:%在SQL语句中是通配符)。无疑,这是一个没有什么危害的例子,但是Max应该使用session、cookie或者其它符号形式来确保数据能并且只能发送到正确的用户那里。它们可能仅仅是数据的一小部分,但它们可能就是最重要的一小部分。
文章评论
共有位Admini5网友发表了评论 查看完整内容