客户端脚本安全

客户端安全的基础是同源策略,什么是同源策略呢?就是限制了不同源的“document”或脚本,对当前“document”读取或者设置属性。有一点需要注意对于当前页面来说页面内存放JS的域并不重要,重要的是加载js页面所在的域是什么。例如在a.com下加载了<script src="b.com/b.js"></script>。但是b.js是运行在a.com页面中的,所以b.js的源就是a.com。而非b.com。在同源策略的限制下是不能跨域访问资源的,随着web发展跨域资源共享,越来越迫切。这就催生了各种安全问题,常见的攻击类型有:跨站脚本攻击,跨站点请求伪造,点击劫持等。

跨站脚本攻击(xss):

他指通过“html注入”,篡改了网页,加入了恶意脚本从而在用户浏览网页时控制了用户的浏览器的行为。例如将用户的输入显示到页面上,如果用户输入:<script>alert(1)</script>;用户就可以注入js。这种攻击是相当具有威胁性的,假如说我可以向当前你浏览的页面中注入我的脚本,那么我就可以读取你的cookie,通过cookie就可以不用登录,进入你某个网站的账号(cookie劫持攻击),这是非常危险的。更危险的是假如浏览器安装了第三方差价,js通过调用这些插件可以得到用户这是ip。xss最高级的攻击形式为蠕虫攻击:2007年,百度空间用户之间相互发垃圾短信,后来百度应急小组紧急修复了这一漏洞。黑客用攻击技巧有哪些呢,知己知彼才能百战不殆。

最简单的是在输入框输入内容进行搜索,一般都会注意到但是嗨哟注意不到的例如:

切记用户是不可信任的,它可以输入任何内容。

一般情况下都要将用户的输入经过编码,注意同意域名下的网页编码格式要一致,否则可以应用编码就行攻击。

有的输入是有长度限制的,例如名字,号码长度,等。通过提前闭合标签可以绕过长度限制。

防御方法:不相信用户的输入,要对属于进行编码,进行长度检查,利用httpOnly属性防止cookie劫持,关键是输出检查,一定要严格控制好在html,js,css的输出。

第二种常见的是跨站点请求伪造,和点击劫持。

假如说你在我的博客下面留言,这个留言可以是一个连接,链接的url是删除这篇博客的url,那么我点击这个链接就会将自己的博客删除。这是浏览器的cookie策略。

不但是用在浏览器伪造,用后端语言都可以伪造,跨站点请求伪造的本质是:重要操作的参数被攻击者猜到了,所以我们使用token。让攻击者无法构造完整的请求。所以token的使用原则是:随机性,有生命周期,以及token的保密性。

 

posted @ 2018-12-27 22:22  node-吉利  阅读(243)  评论(0编辑  收藏  举报