防止前端脚本JavaScript注入

在使用ajax进行留言的时候,出现了一个问题.因为留言内容写完之后,通过ajax提交内容,同时使用js把留言的内容添加到页面上来.浏览留言的时候也是通过ajax请求,然后再显示的.这样,如果有人在留言里写入了js语句,这结语句都会被执行.解决办法就是对这些特殊字符进行转义再显示出来.如果在jsp中使用jstl标签,就很简单了.直接使用<c:out value=”${r.content}”/>这样就行了,会自动进行转义,其中省略了参数escapeXML=”true”,这是默认的.所以说在显示这些用户提交的内容的时候不要用el表达示,因为el不会自动进行转义,用c:out比较好.而如果也是通过ajax请求,然后再显示的,那就用下面的方法.其实也很简单.

1: var html="<script>alert(‘asdfasdf‘)<\/script>";

2: $("#content").text(html);那么会发生什么情况 解决办法很简单 就是把这些特殊字符进行转义也就是<变成<>变成> 使用jquery对字符进行转义这样就可以了  1: <head>  2: <script>  3: var html="<script>alert(‘asdfasdf‘)<\/scipt>";

4: html=$("#x").text(html).html();

5: $("#content").append("<div>"+html+"</div>");

6: </script>  7: </head>  8: <body>  9: <spanid="x"style="display:none"></span> 10: <divid="content"></div> 11: </body>

时间: 2024-11-05 17:26:41

防止前端脚本JavaScript注入的相关文章

前端之JavaScript基础

前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C-minus-minus(C-)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言) Netscape(网景)接收Nombas的理念,(Brendan Eich)在其Netscape Navigator 2.0产品中开发出一套livescript的脚本

JavaScript注入漏洞的原理及防范

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

web前端之JavaScript正则表达式

web前端之JavaScript正则表达式 后面有代码: \d 表示数字 \d? ?表示0个或者一个 \d+ +表示一个或者多个 \d{3} 表示三个 \d{3,5} 表示三到五个 \d{3,} 表示至少出现3次 \d* *表示0到任意个 \b 表示单词边界 \B 表示非单词边界 \bis\b 表示查找" is "的 . 表示任意字符 \ 表示转译 http:(\/\/.+\.jpg) 用()进行分组 $1 获取其内部东西 []表示或 ^表示开头 $表示结尾 g表示全局 \d{4}[/

web前端之JavaScript高级程序设计六:事件

web前端之JavaScript高级程序设计六:事件 JavaScript 与 HTML 之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间.可以使用侦听器(或处理程序)来预订事件,以便事件发生时执行相应的代码.这种在传统软件工程中被称为观察员模式的模型,支持页面的行为(JavaScript 代码)与页面的外观(HTML 和 CSS 代码)之间的松散耦合. 事件流: 事件流描述的是从页面中接收事件的顺序.但有意思的是, IE 和 Netscape 开发团队居然提出了

json数据在前端(javascript)和后端(php)转换

学习目的:前后端数据交换 思路: json数据格式是怎么样? 后端各种语言怎么将自己内容转换成json格式的内容? 前端怎么接收json数据?有几种方式? js中怎么将json数据转换成js中的数组,对象来使用? 遇到问题: 用ajax接收数据直接赋值给了变量,发现里面是一个数组. 在php中不知道怎么传递数据?(或者说ajax的xmlhttp.responseText是怎么获取后端数据的?) php中把对象和数组转换成json数据格式的方法. 学习过程: 1.json知识普及 从结构上看,所有

前端之JavaScript(二)

一.概述 本篇主要介绍JavaScript的BOM和DOM操作,在前端之JavaScript(一)中介绍了JavaScript基础知识 1.1.BOM和DOM BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”. DOM (Document Object Model)是指文档对象模型,通过它,可以访问HTML文档的所有元素. Window对象是客户端JavaScript最高层对象之一,由于window对象是其它大部分对象的

好程序员前端教程-javascript的面向对象

好程序员前端教程-javascript的面向对象一.什么是面向对象?1.面向对象就是把构成问题是无分解成多个对象,建立对象不是为了完成某个步骤,而是描述某个事物在这个解决问题的步骤中的行为.2.面向对象是一种思维方法.3·面向对象是一种编程方法.4·面向对象并不只针对某一种编程语言.二.面向对象和面向过程的区别和联系?1.面向过程侧重整个问题的解决步骤,着眼局部或者具体.2·面向对象侧重具体的功能,让某个对象具有这样的功能,更侧重整体.面向过程的优点:1.流程化使得编程任务明确,在开发之前基本考

前端控制台 JavaScript函数报错 SyntaxError: expected expression, got &#39;;&#39; SyntaxError: expected expression, got &#39;if&#39;

在火狐浏览器下调试时, 页面报错SyntaxError: expected expression, got ';'或者SyntaxError: expected expression, got 'if'等 其实就是js部分某个变量没有赋值到,例如: // 这种echo在前端输出的是空 var test = <?php echo 1 > 0 ? true : false ?>; 在前端js显示的是: var test = ; 注意: 在前端 test = ; 这样的变量没有赋值到就会报错,

抓紧面试前的宝贵时间 快速搞定前端初级JavaScript面试

第1章 课程介绍[说说面试的那些事儿]本章会出几个面试题,分析每道题目设计的知识点,然后总结出一个完整的知识体系.让我们开始 “题目->知识点->解题” 的快乐之旅吧. 第2章 JS基础-变量类型和计算[不会变量,别说你会JS]本章介绍变量的类型和计算的知识点和题目,包括值类型和引用类型区别,类型判断,深拷贝等.变量和类型是一个任何一门语言的基础,不了解的话,会被认为是 JS 语法不过关. 第3章 JS基础-原型和原型链[三座大山之一,必考!!!]本章介绍原型.原型链和 class 相关的知识