Eric Pascarello是Ajax in Action的作家之一。Pascarello Penn州立大学的2002毕业生,获得了机械工程学位。他也是JavaRanch.com上的知名人物。在这次与TechTarget面谈中,他谈论Ajax安全方面的相关议题。
Ajax作为一种技术传达着使用者更为丰富的使用经验从而受到广泛的赞美。但是XMLHttpRequest的使用真的能确保安全?
人们在面对Ajax的时候往往就是看到一个在网页上表演魔术的被称为XMLHttpRequest的东西,而且他们认为这东西能完美的弥补安全上的一些差漏。当我们在页上做简单的视野来源的时候,我们见到的是我们调用,用来传送参数的页。任何使用JavaScript的人只要拥有最基本知识就能很容易地在每个页面上进行编写,改变数据。因此,攻击是很有可能的,但是这并不需要害怕。
人们可能会说,如果某人能如此容易的接管一个请求,这是多么可怕啊。 但是这些人需要了解 XMLHttpRequest并不比普遍的技术容易被破坏。 你能想象出它在另外的框架被调用的一种形式。 表现出来就像是在页上形成的标签和隐藏的本文领域。通过一个正常的HTML格式,我们能抓取元素名字而且见到传送给服务器的参数。 我们能看行动属性而且见到我们正在调用数据的地方。 正如同我们如何去认识XMLHttpRequest一样, 我们能在任何的网页上见到这一切。
为什么说在服务器上做确认是非常重要的?
我们能利用本地属性改变浏览器上相对页面上的内容。不完整的,只读的,隐藏的。但可能在客户端看来这也许根本不过是一个笑话。输入javascript:document.FormName.ElementName.disabled=”false”;void(0)后可以见到那些很可能被改变的领域是否是受到保护了的。这就是为什么任何经验丰富的开发者告诉你需要在服务器上做确认的原因。你无法确定那些你收到的数据从何而来。我能在我的桌面上写一种形式且使它遵从你所看到的页。这可能是一个电脑黑客尝试注射SQL指令划除你的数据。或是在JavaScript中加入有害的代码。数据是不安全的,这一点得随时保持警惕。
对于Ajax是否遇到一些不同于以往的威胁?
Ajax所遇到的一些安全上的威胁一个开发者可能不了解。如果他们只是单纯的设计和实现以Ajax为基础的控制,他们可能很容易地导致他们的服务器崩溃。想像一个网页同时有一千个使用者。他们的服务器能够在这样的负荷下处理以正常形式进入的数据。他们一起在客户端或者服务器身上没有做存储而直接进入数据库得到数据的控制. 现在我们一千个人将这样的请求重复十次。那这个服务器将达到10倍于以往的运算。如果服务器不能够处理它,他们可能会漏掉或者根本就完全停止了。
你注意到利用JavaScript在跨领域请求时所受到的攻击。你能对此做相应解释吗?
对于安全方面的问题真正让我吃惊的是开发者想要能够用JavaScript运行跨领域的请求。现在有一些好的理由去做这,像是Web服务这些,但是大部份还只能在本地上作为服务器端的代码。一般的使用者设定的JavaScript不能够操纵或者访问来自另外的一个领域的数据。开发者想要能够做这,他们必须明确能够不需要在领域外工作的目的。这样的安全设定给我们带来很大的保护,免于我们打通另外的框架遭到攻击,或者是利用 XMLHttpRequest抓我们的电子邮件,存入银行的数据,卡片数据,eBay帐户以及其他。我确定这些人也是真的不想这样。在一个不熟悉的地方调用数据,并交换代码,可是,你会真的信赖正在调用数据的安全么?对一个罐头火腿肉新品种的广告说hello?
看Samy在MySpace.com上写的Ajax蠕虫[2005年十月,一个青少年”Samy”在MySpace发布了一条自我繁殖的Ajax蠕虫]。这对于主要使用Ajax技术的网站是一种大的安全威胁。你得了解蠕虫的作者藉由服务器端的安全检查将病毒注入到一个网页。 现在他可能已经可以很容易地改变密码,在页面上抓取使用者数据。XMLHttpRequest相对于其他的并不是更容易受到攻击,相对而言,你所需要担心的依旧是一些常规的问题。
Pascarello为Ajax安全性所提出的经验法则:
·如果你使用身份验证,确定你在请求页上检查!
·为SQL注入检查.
·为JavaScript注入检查.
·保留商务逻辑在服务器上!
·不要假设每个请求是真正的!
·确认检查数据!
·审查请求的数据而且确定它是正确的.
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
云计算的安全方面如何进行管控?
随着云计算日益发展和壮大,安全成了主要的关注点,目前比较成熟的管控是如何进行的?
-
八个超实用的jQuery技巧攻略
jQuery是JavaScript最好的库之一,主要用于制作动画、事件处理,支持Ajax及HTML脚本客户端。文中分享了8个超实用的jQuery代码技巧攻略,希望你会喜欢。
-
开发团队随时面临违反隐私协议的问题
安全和隐私冲突吗?我们如何确保我们不违反自己的终端用户隐私协议?其实安全和隐私的相交之处就这二者都是组织的责任,来保护他们客户的敏感数据。
-
BEST:SOAP/XML和REST的替代方案
虽然拥有大量的机架服务器,以及大量软件开发人员的组织,基于web和集成服务的SOAP和REST很适合他们,但也会出现问题。