什么是JavaScript注入攻击?

Javascript可以作为黑客攻击网站的一种工具,其中注入js(javascript)恶意脚本就是其中一种手段之一,那么下面,大家来学习一下如何预防js的注入攻击呢?以下有一个不错的陈述,跟大家分享:

什么是 JavaScript 注入攻击?
每当接受用户输入的内容并重新显示这些内容时,网站就很容易遭受 JavaScript 注入攻击。让我们研究一个容易遭受 JavaScript 注入攻击的具体应用程序。假设已经创建了一个客户反馈网站。客户可以访问网站并输入对产品的反馈信息。当客户提交反馈时,反馈信息重新显示在反馈页面上。

客户反馈网站是一个简单的网站。不幸的是,此网站容易遭受 JavaScript 注入攻击。

假设正在将以下文本输入到客户反馈表单中:

<script>alert(“Boo!”)</script>

此文本表示显示警告消息框的 JavaScript 脚本。在某人将此脚本提交到客户反馈表单后,消息 Boo! 会在将来任何人访问客户反馈网站时显示的攻击。您可能还认为别人不会通过 JavaScript 注入攻击搞破坏。

现在,您对 JavaScript 注入攻击的第一反应也许是不理会。您可能认为 JavaScript 注入攻击不过是一种无伤大雅,不幸的是,黑客会通过在网站中注入 JavaScript 进行破坏活动。使用 JavaScript 注入攻击可以执行跨站脚本 (XSS) 攻击。在跨站脚本攻击中,可以窃取保密的用户信息并将信息发送到另一个网站。

例如,黑客可以使用 JavaScript 注入攻击窃取来自其他用户浏览器的 Cookies 值。如果将敏感信息(如密码、信用卡帐号或社会保险号码)保存在浏览器 Cookies 中,那么黑客可以使用 JavaScript 注入攻击窃取这些信息。或者,如果用户将敏感信息输入到页面的表单字段中,而页面受到 JavaScript 攻击的危害,那么黑客可以使用注入的 JavaScript 获取表单数据并将其发送到另一个网站。

请高度重视。认真对待 JavaScript 注入攻击并保护用户的保密信息。在接下来的两部分中,我们将讨论防止 ASP.NET MVC 应用程序受到 JavaScript 注入攻击的两种技术。

方法 1:视图中的 HTML 编码

阻止 JavaScript 注入攻击的一种简单方法是重新在视图中显示数据时,用 HTML 编码任何网站用户输入的数据

如:<%=Html.Encode(feedback.Message)%>

使用 HTML 编码一个字符串的含意是什么呢?使用 HTML 编码字符串时,危险字符如 < 和 > 被替换为 HTML 实体,如 < 和 >。所以,当使用 HTML 编码字符串 <script>alert(“Boo!”)</script>时,它将转换为 <script>alert(“Boo!”)</script>。浏览器在解析编码的字符串时不再执行 JavaScript 脚本。而是显示无害的页面

方法 2:写入数据库之前的 HTML 编码
除了在视图中显示数据时使用 HTML 编码数据,还可以在将数据提交到数据库之前使用 HTML 编码数据。第二种方法正是程序清单 4 中 controller 的情况。

如:

public ActionResult Create(string message)
{
// Add feedback
var newFeedback = new Feedback();
newFeedback.Message = Server.HtmlEncode(message);
newFeedback.EntryDate = DateTime.Now;
db.Feedbacks.InsertOnSubmit(newFeedback);
db.SubmitChanges(); 

// Redirect
return RedirectToAction(“Index”);
}

请注意,Message 的值在提交到数据库之前是在 Create() 操作中经过 HTML 编码的。当在视图中重新显示 Message 时,Message 被 HTML 编码,因而不会执行任何注入到 Message 中的 JavaScript。

总结

通常,人们喜欢使用本教程中讨论的第一种方法,而不喜欢使用第二种方法。第二种方法的问题在于在数据库中最终会保留 HTML 编码的数据。换言之,数据库中的数据会包含奇怪的字符。这有什么坏处呢?如果需要用除网页以外的形式显示数据库数据,则将遇到问题。例如,不能轻易在 Windows Forms 应用程序中显示数据。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈利用JavaScript进行的DDoS攻击原理与防御

    分布式拒绝服务攻击(DDoS)攻击是一种针对网站发起的最古老最普遍的攻击.Nick Sullivan是网站加速和安全服务提供商CloudFlare的一名系统工程师.近日,他撰文介绍了攻击者如何利用恶意网站.服务器劫持和中间人攻击发起DDoS攻击,并说明了如何使用HTTPS以及即将到来的名为"子资源一致性(Subresource Integrity,简称SRI)"的Web新技术保护网站免受攻击. 现代网站的大部分交互都来自于JavaScript.网站通过直接向HTML中添加JavaScr

  • 冲浪DDoS(拒绝服务)攻击的趋势与防御

    一.阻断服务(Denial of Service) 在探讨DDoS 之前我们需要先对 DoS 有所了解,DoS泛指黑客试图妨碍正常使用者使用网络上的服务,例如剪断大楼的电话线路造成用户无法通话.而以网络来说,由于频宽.网络设备和服务器主机等处理的能力都有其限制,因此当黑客产生过量的网络封包使得设备处理不及,即可让正常的使用者无法正常使用该服务.例如黑客试图用大量封包攻击一般频宽相对小得多的拨接或 ADSL 使用者,则受害者就会发现他要连的网站连不上或是反应十分缓慢. DoS 攻击并非入侵主机也不

  • 让浏览器崩溃的12行JS代码(DoS攻击分析及防御)

    Ajax与pjax AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新-无刷新操作. 但是,ajax应用也会造成另外的问题,容易导致浏览器无法前进与后退,这是个很头疼的问题,开发人员必须增加工作量(比如通过一个隐藏的iframe,或者改变location.ha

  • DDoS攻击的趋势与相关防御策略

    一.阻断服务(Denial of Service) 在探讨 DDoS 之前我们需要先对 DoS 有所了解,DoS泛指黑客试图妨碍正常使用者使用网络上的服务,例如剪断大楼的电话线路造成用户无法通话.而以网络来说,由于频宽.网络设备和服务器主机等处理的能力都有其限制,因此当黑客产生过量的网络封包使得设备处理不及,即可让正常的使用者无法正常使用该服务.例如黑客试图用大量封包攻击一般频宽相对小得多的拨接或 ADSL 使用者,则受害者就会发现他要连的网站连不上或是反应十分缓慢. DoS 攻击并非入侵主机也

  • PHP中防止SQL注入攻击和XSS攻击的两个简单方法

    mysql_real_escape_string() 所以得SQL语句如果有类似这样的写法:"select * from cdr where src =".$userId; 都要改成 $userId=mysql_real_escape_string($userId) 所有有打印的语句如echo,print等 在打印前都要使用htmlentities() 进行过滤,这样可以防止Xss,注意中文要写出htmlentities($name,ENT_NOQUOTES,GB2312) .

  • 防御DDoS攻击实用指南 守住你的网站

    一.为何要DDoS? 随着Internet互联网络带宽的增加和多种DDoS黑客工具的不断发布,DDoS拒绝服务攻击的实施越来越轻易,DDoS攻击事件正在成上升趋势.出于商业竞争.打击报复和网络敲诈等多种因素,导致很多IDC托管机房.商业站点.游戏服务器.聊天网络等网络服务商长期以来一直被DDoS攻击所困扰,随之而来的是客户投诉.同虚拟主机用户受牵连.法律纠纷.商业损失等一系列问题,因此,解决DDoS攻击问题成为网络服务商必须考虑的头等大事. 二.什么是DDoS? DDoS是英文Distribut

  • IIS防御小规模DDOS攻击实例(反向代理)

    最近几天公司官网和业务系统的注册页面频繁遭遇DDOS攻击,导致IIS应用程序池CPU占用率100%,访问网站出现503错误.下面总结一下应对措施.     一.启用IIS的CPU监视功能 对于低频率的DDOS可以采取这种方法.w3wp.exe是应用程序池的关联进程,当WEB访问量大时,w3wp.exe会占用大量的系统资源.在DDOS攻击下,很明显的现象就是w3wp.exe占用CPU达到100%,网站拒绝访问,这个时候远程登录服务器都很困难.针对这种情况,做如下优化: 1.为IIS中的每个网站设置

  • 使用AngularJS中的SCE来防止XSS攻击的方法

    这篇文章展示了有关XSS(跨站脚本)的不同方案以及怎样使用AngularJS中SCE($sceProvider),sanitize service这些特性来正确处理XSS.如果我遗漏了什么重要的地方请直接评论/建议.同时,错别字请见谅. 以下几点内容将是我接下来要讲述的重点: 全部转码HTML 安全插入HTML的同时忽略类似"script"这样的标签.如果不加以注意,这将一样存在风险同时也会丑化页面,尤其是在有"img"标签的时候. 依赖并插入纯HTML:这也有风险

  • 一次真实的DDoS攻击防御实战

    第一轮进攻: 时间:下午15点30左右 突然发现公司的web server无法访问,尝试远程登录,无法连接,呼叫idc重启服务器.启动后立即登录察看,发现攻击还在继续,并且apache所有230个进程全部处于工作状态.由于服务器较老,内存只有512m,于是系统开始用swap,系统进入停顿状态.于是杀掉所有httpd,稍后服务器恢复正常,load从140降回正常值. 开始抓包,发现流量很小,似乎攻击已经停止,尝试启动httpd,系统正常.察看httpd日志,发现来自五湖四海的IP在尝试login.

  • 什么是JavaScript注入攻击?

    Javascript可以作为黑客攻击网站的一种工具,其中注入js(javascript)恶意脚本就是其中一种手段之一,那么下面,大家来学习一下如何预防js的注入攻击呢?以下有一个不错的陈述,跟大家分享: 什么是 JavaScript 注入攻击? 每当接受用户输入的内容并重新显示这些内容时,网站就很容易遭受 JavaScript 注入攻击.让我们研究一个容易遭受 JavaScript 注入攻击的具体应用程序.假设已经创建了一个客户反馈网站.客户可以访问网站并输入对产品的反馈信息.当客户提交反馈时,

  • 浅谈html转义及防止javascript注入攻击的方法

    有的时候页面中会有一个输入框,用户输入内容后会显示在页面中,类似于网页聊天应用.如果用户输入了一段js脚本,比例:<script>alert('test');</script>,页面会弹出一个对话框,或者输入的脚本中有改变页面js变量的代码则会时程序异常或者达到跳过某种验证的目的.那如何防止这种恶意的js脚本攻击呢?通过html转义能解决这个问题. 一:什么是html转义? html转义是将特殊字符或html标签转换为与之对应的字符.如:< 会转义为 <> 或转义

  • 再谈javascript注入 黑客必备!

    什么是javascript注入攻击? 1.JavaScript注入就是在浏览器地址栏中输入一段js代码,用来改变页面js变量.页面标签的内容. 使用Javascript注入,用户不需要关闭或保存网页就可以改变其内容,这是在浏览器的地址栏上完成的.命令的语法如下: javascript:alert(#command#) 例如,如果你想在http://www.example.com站点上看到一个alert警告框,那么首先在地址栏上输入URL并等待页面加载完成,然后删掉URL并输入: javascri

  • 细谈php中SQL注入攻击与XSS攻击

    例如: SQL注入攻击 XSS攻击 复制代码 代码如下: 任意执行代码 文件包含以及CSRF. } 关于SQL攻击有很多文章还有各种防注入脚本,但是都不能解决SQL注入的根本问题 见代码: 复制代码 代码如下: <?php mysql_connect("localhost","root","123456")or die("数据库连接失败!"); mysql_select_db("test1"); $u

  • JavaScript注入漏洞的原理及防范(详解)

    初次接触: 初次接触JavaScript注入漏洞后,如果不对这种漏洞的作用机理仔细分析并提取出其发生的某种模式,你就不能做到快速的发现项目中可能存在的所有注入风险并在代码中防范. 发生模式: JavaScript注入漏洞能发生作用主要依赖两个关键的动作,一个是用户要能从界面中注入JavaScript到系统的内存或者后台存储系统中:二是系统中存在一些UI会展示用户注入的数据. 比如注入漏洞最常见的就是发生在各种类型的名字中,比如系统中的人名等等,因为名字往往会在各种系统上显示,如果在某个用户输入名

  • SpringBoot如何防止XSS注入攻击详解

    什么是 XSS 攻击 在跨站脚本(XSS)攻击中,攻击者可以在受害者的浏览器中执行恶意脚本.这种攻击通常是通过在网页中插入恶意代码 (JavaScript) 来完成的.攻击者在使用攻击后一般能够: 修改网页内容 将用户重定向到其他网站 访问用户的 Cookie 并利用此信息来冒充用户 访问有关用户系统的关键信息,例如地理位置,网络摄像头,文件系统 将木马功能注入应用程序 如果被攻击的用户在应用程序中具有更高的权限.攻击者可以完全控制应用程序,并破坏所有用户及其数据. XSS 攻击类型 常见的 X

  • PHP与SQL注入攻击防范小技巧

    下面来谈谈SQL注入攻击是如何实现的,又如何防范. 看这个例子: 复制代码 代码如下: // supposed input $name = "ilia'; DELETE FROM users;"; mysql_query("SELECT * FROM users WHERE name='{$name}'"); 很明显最后数据库执行的命令是: SELECT * FROM users WHERE name=ilia; DELETE FROM users 这就给数据库带来

  • Javascript注入技巧

    作者: kostis90gr 翻译: 黯魂[S.S.T] 本文已发表于<黑客防线>6月刊,版权属于<黑客防线>及脚本安全小组,转载请保持文章完整性,谢谢 :) 这份指南仅仅是出于报告目的,如果任何人把它用于违法目的,我不负责任. 通过使用javascript注入,用户不用关闭网站或者把页面保存在他的PC上就可以改变网站中的内容.这是由他的浏览器的地址栏完成的. 命令的语法看上去像这样: Copy code javascrit:alert(#command#) 比方说如果你想看到在网

  • php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击

    php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击 php防止SQL注入攻击一般有三种方法: 使用mysql_real_escape_string函数 使用addslashes函数 使用mysql bind_param() 本文章向大家详细介绍这三个方法在防止SQL注入攻击中的效果及区别. mysql_real_escape_string防sql注入攻击 mysql_real_escape_string() 函数转义 SQL 语句中

  • 防御SQL注入攻击时需要注意的一个问题

    目前很多IIS防火墙其实质就是一个ISAPI Filter,针对SQL注入攻击的防御实质就是关键字过滤,这一点在我以前的随笔中提到的在开发的Web Server Guard中也是这样操作的.但目前大部分的IIS防火墙都存在一个漏洞:如果关键字包含未转义百分比符号 (%) ,那么将会绕过这些IIS防火墙的请求过滤和拦截,包含IIS 7.0的Request Filter. window.google_render_ad(); 因为这类防火墙都是查找位于URL/Form/Cookie中的关键字,比如E

随机推荐