防止 XSS 攻击 解决方案

XSS又叫CSS英文缩写为Cross Site Script
中文意思为跨站脚本攻击
具体内容指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,
嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的.

 

解决方案

 

第一。过滤

 

过滤 标签 等字符 ,但是这样 对用户是不公平的。

第二。用asii 码替换

 

如 <  >  ! 等 

 

第三 。 用 element.innerText 显示用户数据

 

 这样要写大量的 js

第四。 使用

</p> <p><xmp>标签不解析内部的html元素,而且不执行内部的javascript脚本代码</p> <p>但是要防止攻击代码在数据中间插入从而绕过保护

 

第五。通过 frame 来防止 数据页面攻击 主页面

 使用 document.domain 属性 来控制

 




    测试iframe的单向访问
   



为了避免XSS跨站攻击,在大多数html编辑器的设计中,都是要将用户输入的HTML内容进行过滤。过滤代码繁琐暂且不说,关键是不能保证考虑到所有已知和未知的攻击类型。


如果我们能设计一个iframe的单向访问模型,就可以让用户输入的HTML内容在受控的环境中执行,也就不需要再进行过滤了。


举例来说,我们html编辑器所在的主页面为a,嵌入一个iframe为b。a可以访问b的内容,而b却不能访问a的内容。这样的话,b中的HTML内容即使包含攻击代码,也无法发挥作用了。









   
   

   

   

    iframe中的代码:
   

   

        <script language="javascript">

        //domain
        document.domain="pimshell.com";

        //访问主页面试试看
        function geta()
        {
            alert(parent.document.body.innerHTML);
        }

        </script>   
   


   

    主页面中的代码:
   

   

        <script language="javascript">

            //frame1的document
            var oDocument=null;

            //响应frame1的onload事件
            function frame1_onload()
            {   
                //旧的domain
                var sDomainOld=document.domain;
               
                //降级domain
                document.domain="pimshell.com";
               
                //保存frame1的document
                oDocument=frame1.document;
               
                //恢复domain
                document.domain=sDomainOld;
               
                //准备就绪
                button1.disabled=false;
            }

            //改变IFrame的背景颜色
            function changebackcolor()
            {
                if(oDocument.body.style.backgroundColor=="")
                    oDocument.body.style.backgroundColor="blue";
                else
                    oDocument.body.style.backgroundColor="";
            }

        </script>
   






你可能感兴趣的:(防止 XSS 攻击 解决方案)