这篇文章说的是对Eric Pascarello的一次访问的内容。Eric Pascarello是Ajax In Action的作者之一。
Eric Pascarello首先不认为XMLHttpRequest增加了太多的安全问题。因为XMLHttpRequest也不过是一个普通的表单提交。不使用XMLHttpRequest,而是普通的表单提交的话。我们一样可以通过查看页面的源代码来查看表单的action地址,获取提交的参数等。
Eric Pascarello强调了服务器验证的重要性。任何客户端的验证,比如disabled,read-only和hidden元素只是一个笑话。在浏览器地址栏中输入javascript:document.FormName.ElementName.disabled=”false”;void(0); 那些受保护的页面元素的属性就更改了。没有数据是安全的,所以服务器验证很重要。
Ajax的确引入新的问题,如果开发人员设计了很差的Ajax控件的话,很容易引起服务器崩溃。比如类似Google Suggest这样的应用,如果不在客户端和服务器做cache,原来是用户输入完成之后才提交请求,现在是用户每输入一个字就提交查询,不缓存的话,查询的数目就增大了数倍。
Eric Pascarello最后说到的是关于跨域的请求(cross-domain request),这会带来很多问题,应该尽量避免。如果的确需要的话,比如调用第三方提供的服务,就需要小心谨慎。
Pascarello’s Rules of Thumb for Ajax Security:
- If you use user authentication, make sure you check for it on the request page!
- Check for SQL injections.
- Check for JavaScript injections.
- Keep the business logic on the server!
- Don’t assume every request is real!
- Check the data with validation!
- Look at the request’s header information and make sure it is correct.