网页劫持

web前端安全除了平常的XSS、CSRF外还存在一种安全问题就是网页劫持。所谓的网页劫持就是非法的网页被修改拦截了。来看下面的具体解释。

什么是网页劫持:

    使用HTTP请求请求一个网站页面的时候,网络运营商会在正常的数据流中插入精心设计的网络数据报文,让客户端(通常是浏览器)展示“错误”的数据,通常是一些弹窗,宣传性广告或者直接显示某网站的内容。

分类

 I、

跳转型劫持
:用户输入地址A,但是跳转到地址B

 II、

注入型劫持
:过在正常的网页中注入广告代码(js、iframe等),实现页面弹窗提醒或者底部广告等。

      1),注入js类劫持:在正常的页面注入js代码实现劫持。

      2),iframe类劫持:将正常网页嵌套iframe或者页面增加iframe。

      3),篡改页面类劫持:正常页面出现多余的劫持网页标签,导致页面整体大小发生变化。

防御

 1.  跳转型劫持,若用单纯靠Web页面进行检测比较困难

 2.  注入JS类:

       1)

改写document.write方法

       2)

遍历页面script标签,给外链JS增加白名单,不在白名单内js外链都上报

 3.iframe类:

比较window.self 和window.top 或 比较parent 和 window,同时可增加白名单

       获取正确地址

        function getCorrectUrl() {

            var url ; 

             if(parent != window) {

                 try   {

                    url = parent.location.href;

                 }catch(){ 

                     url = document.referrer

                 }

             }

         }

  4.特殊方式

     类似电信捏造在白名单内的js URL和篡改页面内容的,我们用上面提到的方法检测不到这些信息,如果是在APP内,可以做的事情就比较多了,除了上面之外,还可以比较页面的 content-length。

 script内核心代码如下:

function
hiJackSniffer
()

var
files

$
.
toArray
(
D
.
querySelectorAll
(
‘script[src]’
));

var
arr
=[];

for
(
var
i

0
,
len

files
.
length
;
i
<
len
;
i
++){

     files

[
i
].
src
&&
arr
.
push
(
files
[
i
].
src
);

}

if
(
arr
.
length
){

     return

sendImg
(
arr
,
1
);

}

arr

getParentUrl
();

if
(
arr
&&
arr
.
length
){

//被嵌入iframe

return
sendImg
([
arr
],
2
);

   }

if
(
D
.
documentElement
.
outerHTML
.
length

4e3
){

var
tmp
={};

var
headjs

$
.
toArray
(
D
.
head
.
querySelectorAll
(
‘script’
));

      var

unknownCode
=[];

if
(
headjs
.
length
){

            unknownCode 

=
unknownCode
.
concat
(
headjs
.
map
(
function
(
v
){

        return

v
.
innerHTML
;

}).
filter
(
function
(
v
){

         return

!!
v
;

       }));

      }

     var

body

$
.
toArray
(
D
.
body
.
querySelectorAll
(
‘*’
));

if
(
body
.
length

1
){

        unknownCode 

=
unknownCode
.
concat
(
body
.
map
(
function
(
v
)

return
v
.
outerHTML
.
split
(
‘\n’
).
join
(
‘’
)

}).
filter
(
function
(
str
){

if
(
/^

return false
;

}

return true
;

}));

}

return
sendImg
(
unknownCode
,
3
);

}

        sendImg

([],
0
);

}

漏洞挖掘

1)目标的HTTP响应头是否设置好了X-Frame-Options字段

     确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击

DENY
:标示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许

sameorigin
: 表示该页面可以在相同域名页面的 frame 中展示。

allow-from uri
:表示该页面可以在指定来源的 frame 中展示。

2)目标是否有javascript的Frame Busting机制

3)尝试用iframe嵌入网站
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值