浅谈输入框内容代码攻击

javascript可以作为黑客攻击网站的一种工具,其中注入js恶意脚本就是其中一种手段,那么下面我们来学习一下如何预防js的攻击。在学习阻止js攻击之前,我们先来了解一下什么是js代码攻击
Javascript注入攻击指的是通过网页地址后加javascript代码,影响系统运作,javascript注入漏洞能发生作用主要依赖两个关键的动作:一个是用户要能从界面中注入JavaScript到系统的内存或者后台存储系统中;二是系统中存在一些UI会展示用户注入的数据。举个例子:注入漏洞最常见的就是发生在各种类型的名字中,比如系统中的人名等等,因为名字往往会在各种系统上显示,如果在某个用户输入名字的时候注入了脚本,那么受其影响的各个系统都有发生注入漏洞的风险 本文章只是简单的介绍了js代码攻击有兴趣的小伙伴可以去这个链接看看常见的js攻击
那么下面我们来具体看一下 输入框如何防止js代码防止攻击
很多网站都有私信或者留言板功能。登录用户可以发表评论或者给其他用户(包括管理员)发送私信。一个最简单的模拟表单如下:

当用户点击发送时,这条消息会被保存在数据库中指定的数据表中,另一个用户当打开这条消息的时候将看到发送的内容。但是,如果一个恶意攻击者发送的内容包含了一些javascript代码,这些代码用于偷取敏感的cookie信息。当用户打开看到这条消息的时候,恶意的javascript代码就会得到执行,造成敏感cookie信息泄漏。攻击者可以利用获得这些cookie信息进行session hijacking会话劫持,直接以合法用户的身份登录其他用户的账户。
解决方法一:在视图中使用Html.Encode显示数据
防止JavaScript注入攻击的一个简单方法就是当显示用户输入的数据时,使用Html.Encode()方法把数据库中的数据编码显示。
HTML Encode的意思就是,把一些危险的字符如<和>替换为<和>。所以当被Encode后,就会变为<script>alert(“Hello”)</script>。被编码后的字符串就不再是一个可执行的JavaScript代码了,它会正常显示在页面上
解决方法二:在控制器中对HTML数据进行编码
除了在显示的时候对用户反馈的信息进行编码显示,我们还可以在控制器接收到用户提交的数据后进行编码,然后把编码后的数据送到数据库中。Create()动作在向数据库插入数据之前,对用户输入的数据进行编码。当在界面中显示数据库数据的时候,用户的输入已经被编码了,就不会造成危险。