Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在javascript中使用easpi的规范化数据

如何在javascript中使用easpi的规范化数据
EN

Stack Overflow用户
提问于 2015-02-01 22:04:08
回答 2查看 267关注 0票数 1

如何按照veracode的建议使用Esapi对数据进行规范化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
out.print(ESAPI.encoder().encodeForHTML(jsonObj.toJSONString()));

现在控制台中看到的数据是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"total":1,"records":5,"rows":[{"id":"RLCP.NS","cell":{"ser":"EQ","bdlt":1,"e":"NSE","chigh":"534.7","tick":"0.05","m":1,"prec":2,"W\/L":null,"exch":"nse_cm","tk":"2882","action":"<button class='button-style-s button-alt2' onclick='Buy()&#x3b;'>Buy<\/button><button class='button-style-s button-alt1' onclick='Sell()&#x3b;'>Sell<\/button>","rowtoken":"NSE2882","ts":"RLCP.NS","clow":"437.5"}},{"id":"SBI.NS","cell":{"ser":"EQ","bdlt":1,"e":"NSE","chigh":"339.8","tick":"0.05","m":1,"prec":2,"W\/L":null,"exch":"nse_cm","tk":"3045","action":"<button class='button-style-s button-alt2' onclick='Buy()&#x3b;'>Buy<\/button><button class='button-style-s button-alt1' onclick='Sell()&#x3b;'>Sell<\/button>","rowtoken":"NSE3045","ts":"SBI.NS","clow":"278.1"}},{"id":"YESB.NS","cell":{"ser":"EQ","bdlt":1,"e":"NSE","chigh":"948.65","tick":"0.05","m":1,"prec":2,"W\/L":null,"exch":"nse_cm","tk":"11915","action":"<button class='button-style-s button-alt2' onclick='Buy()&#x3b;'>Buy<\/button><button class='button-style-s button-alt1' onclick='Sell()&#x3b;'>Sell<\/button>","rowtoken":"NSE11915","ts":"YESB.NS","clow":"776.25"}},{"id":"BOB.NS","cell":{"ser":"EQ","bdlt":1,"e":"NSE","chigh":"212.45","tick":"0.05","m":1,"prec":2,"W\/L":null,"exch":"nse_cm","tk":"4668","action":"<button class='button-style-s button-alt2' onclick='Buy()&#x3b;'>Buy<\/button><button class='button-style-s button-alt1' onclick='Sell()&#x3b;'>Sell<\/button>","rowtoken":"NSE4668","ts":"BOB.NS","clow":"173.85"}},{"id":"SBNK.NS","cell":{"ser":"EQ","bdlt":1,"e":"NSE","chigh":"128.85","tick":"0.05","m":1,"prec":2,"W\/L":null,"exch":"nse_cm","tk":"7179","action":"<button class='button-style-s button-alt2' onclick='Buy()&#x3b;'>Buy<\/button><button class='button-style-s button-alt1' onclick='Sell()&#x3b;'>Sell<\/button>","rowtoken":"NSE7179","ts":"SBNK.NS","clow":"105.45"}}]}

但它在html中呈现为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"total":1,"records":5,"rows":[{"id":"RLCP.NS","cell":{"ser":"EQ","bdlt":1,"e":"NSE","chigh":"534.7","tick":"0.05","m":1,"prec":2,"W\/L":null,"exch":"nse_cm","tk":"2882","action":"<button class='button-style-s button-alt2' onclick='Buy();'>Buy<\/button><button class='button-style-s button-alt1' onclick='Sell();'>Sell<\/button>","rowtoken":"NSE2882","ts":"RLCP.NS","clow":"437.5"}},{"id":"SBI.NS","cell":{"ser":"EQ","bdlt":1,"e":"NSE","chigh":"339.8","tick":"0.05","m":1,"prec":2,"W\/L":null,"exch":"nse_cm","tk":"3045","action":"<button class='button-style-s button-alt2' onclick='Buy();'>Buy<\/button><button class='button-style-s button-alt1' onclick='Sell();'>Sell<\/button>","rowtoken":"NSE3045","ts":"SBI.NS","clow":"278.1"}},{"id":"YESB.NS","cell":{"ser":"EQ","bdlt":1,"e":"NSE","chigh":"948.65","tick":"0.05","m":1,"prec":2,"W\/L":null,"exch":"nse_cm","tk":"11915","action":"<button class='button-style-s button-alt2' onclick='Buy();'>Buy<\/button><button class='button-style-s button-alt1' onclick='Sell();'>Sell<\/button>","rowtoken":"NSE11915","ts":"YESB.NS","clow":"776.25"}},{"id":"BOB.NS","cell":{"ser":"EQ","bdlt":1,"e":"NSE","chigh":"212.45","tick":"0.05","m":1,"prec":2,"W\/L":null,"exch":"nse_cm","tk":"4668","action":"<button class='button-style-s button-alt2' onclick='Buy();'>Buy<\/button><button class='button-style-s button-alt1' onclick='Sell();'>Sell<\/button>","rowtoken":"NSE4668","ts":"BOB.NS","clow":"173.85"}},{"id":"SBNK.NS","cell":{"ser":"EQ","bdlt":1,"e":"NSE","chigh":"128.85","tick":"0.05","m":1,"prec":2,"W\/L":null,"exch":"nse_cm","tk":"7179","action":"<button class='button-style-s button-alt2' onclick='Buy();'>Buy<\/button><button class='button-style-s button-alt1' onclick='Sell();'>Sell<\/button>","rowtoken":"NSE7179","ts":"SBNK.NS","clow":"105.45"}}]}

如图所示,我的javscript无法理解数据,并且失败了。我能做些什么来解决这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-03 04:20:55

我使用了ESAPI.encode().escapeForJavaScript(),得到了以下结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\x7B\x22mw0\x22\x3A\x22Default\x22\x7D

现在,要将其更改为我使用的java脚本可以理解的格式,请参见下面的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data="\x7B\x22mw0\x22\x3A\x22Default\x22\x7D"
decodeURIComponent(data.replace(/\\x/g, '%'));

回报是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"{"mw0":"Default"}"
票数 0
EN

Stack Overflow用户

发布于 2015-02-02 06:24:13

您需要根据打算如何使用数据来转换您的数据。在本例中,您有用于javascript上下文的数据,因此您需要使用带有指向接口ESAPI.encode().escapeForJavaScript()的链接的这里。

如果要发送要直接呈现到页面的数据,则需要使用ESAPI.encode().encodeForHTML()

然而,就目前情况而言,即使使用javascript转义也可能无法工作,因为您试图对整个JSON对象进行编码。要使其正常工作,您需要确保每个单独的数据元素都是针对javscript上下文转义的。

例如,被封送到此JSON的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       {
        "id": "SBNK.NS",
        "cell": {
            "ser": "EQ",
            "bdlt": 1,
            "e": "NSE",
            "chigh": "128.85",
            "tick": "0.05",
            "m": 1,
            "prec": 2,
            "W\/L": null,
            "exch": "nse_cm",
            "tk": "7179",
            "action": "<button class='button-style-s button-alt2' onclick='Buy();'>Buy<\/button><button class='button-style-s button-alt1' onclick='Sell();'>Sell<\/button>",
            "rowtoken": "NSE7179",
            "ts": "SBNK.NS",
            "clow": "105.45"
        }

假设服务器上有它的java代码,您可能希望这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void someControllerMethod(httpReq, httpResp){

     DataObject myData = somthingFromADao.getBean();
     ViewBean vBean = new vBean();

     vBean.setId(encoder.escapeForJavaScript(myData.id));
     Cell myCell = myData.getCell();
     Cell vCell = new vCell();
     vCell.setSer(encode.escapeForJavaScript(myCell.getSer()));
     // ...^^^can be done as a "populate" method or some similar pattern.
     //Marshall as JSON
}

数据集中唯一可能让您感到头疼的是"action“字段:它显然试图注入要呈现的HTML。Veracode不会标记它,但是您必须确保您也在监视XSS的向量。应该重新架构,这样您就不必将动态生成的代码作为数据元素传递。现在大多数XSS都是基于DOM的,所以您不希望在浏览器中编写HTML。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28271938

复制
相关文章
【CSS】更改用户界面样式 ① ( 更改鼠标样式 | 更改鼠标样式应用场景 | 代码示例 )
在之前的 【CSS】轮播图案例开发 ( 基本设置 | 子绝父相 | 浏览器水平居中 | 圆角设置 | 绝对定位居中设置 ) 轮播图中 , 鼠标移动到 轮播图底部的小圆点上时 , 一般会变成小手形状的 , 这样用户体验更好 ;
韩曙亮
2023/04/16
2.4K0
【CSS】更改用户界面样式 ① ( 更改鼠标样式 | 更改鼠标样式应用场景 | 代码示例 )
【javascript】原生js更改css样式的两种方式
本文介绍了原生js更改CSS样式两种方式,分别是通过在javascript代码中直接更改CSS样式和利用CSS样式表进行更改。第一种方式是通过在javascript代码中的node.style.cssText="css表达式1;css表达式2;css表达式3",第二种方式是先在CSS样式表中对特定的类设置样式,然后再在javascript代码中通过node.classname="active"来使CSS样式表中对active类的样式设置附加到该node节点上。
啦啦啦321
2018/01/03
4.3K0
手把手教你使用CanvasAPI打造一款拼图游戏
我们今天的目标是使用HTML5画布技术制作一款拼图小游戏,要求将图像划分为3*3的9块方块并打乱排序,用户可以移动方块拼成完整图片。
前端皮皮
2021/11/02
1.6K0
手把手教你使用CanvasAPI打造一款拼图游戏
CSS样式更改——过渡、动画
上篇文章主要讲述了CSS样式更改中的2D转换,这篇文章我们来介绍下CSS样式更改中的过渡、动画基础用法。
前端皮皮
2020/11/25
1.2K0
CSS样式更改——文本Content
上篇文章主要讲述了CSS样式更改中的背景Background,这篇文章我们来谈谈文本Content内容的基础用法。
前端皮皮
2020/11/26
1.7K0
JavaScript的自定义对象
var obj1 = new Object(), obj2 = {};//Object 对象
小小鱼儿小小林
2020/06/23
6320
javascript--自定义对象
JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组成(听起来是不是很像我们常听说的HASH表、字典、健/值对?),而其中的值类型可能是内置类型(如number,string),也可能是对象。这种方式不能用new方式创建,所以不可重用。
潇洒
2023/10/20
2560
jsNavigator对象的讲解_javascript自定义对象
navigator是一个独立的对象,他用于提供用户所使用的浏览器以及操作系统等信息,以navigator对象属性的形式来提供。
全栈程序员站长
2022/10/03
6900
CSS样式更改篇——背景Background
上篇文章主要讲述了CSS的基础用法,讲述了如何定义头文件,导入CSS文件,id和class选择器,元素选择器,后代选择器,子元素选择器,兄弟选择器,伪类选择器等等,让大家对CSS选择器有个简单的认识和了解。这篇接上篇文章,继续讲解CSS的基础用法。
前端皮皮
2020/11/26
1.5K0
ios 继承UITableViewController,更改tableview样式
// 继承UITableViewController,更改tableview样式 - (instancetype)initWithStyle:(UITableViewStyle)style { return [super initWithStyle:UITableViewStyleGrouped]; } 在新建的uitableviewcontroller中  加上上述的方法。   等于是重写父类的方法。可以实现tableview的style变成 UITableViewStyleGrouped 转载请注明
用户1219438
2018/02/01
1.2K0
如何更改滚动条样式?
如何自定义浏览器的滚动条呢,下面给大家讲解一下,其实很简单,通过设定css样式就可以实现。
申霖
2019/12/27
2.5K0
如何更改滚动条样式?
如何更改伪元素的样式
在前端开发中我们会经常用到伪元素,有时候需要通过js来修改伪元素的样式,那么有哪几种方式来修改伪元素的样式呢?
挥刀北上
2021/01/27
9.3K0
如何更改伪元素的样式
JavaScript 允许自定义对象分析
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数... 此外,JavaScript 允许自定义对象。 JavaScript 提供多个内建对象,比如 String、Date、Array 等等。 对象只是带有属性和方法的特殊数据类型。
用户7718188
2021/10/07
3840
博客园美化,更改外部主题,自定义JavaScript
在之前,我一直以为博客园他是那种万年不变的老旧风格,看着就有一种年代感,但是,昨天我莫名看到一个项目,我尝试进行了美化后,发现这玩意很好看啊。
JanYork_简昀
2022/05/18
1.2K0
博客园美化,更改外部主题,自定义JavaScript
Vue 父组件更改子组件样式
中 scoped 是受保护的,当 <style> 标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素。这类似于 Shadow DOM 中的样式封装固更改子组件的style时是失效的
White feathe
2022/05/05
1.9K0
CSS样式更改——2D转换
上篇文章主要讲述了CSS样式更改中的裁剪、Z-Index、清除、改变元素的特性基础知识,这篇文章我们来介绍下CSS样式更改中2D转换的基础用法。
前端皮皮
2020/11/25
1K0
PHPCMS更改后台编辑器样式
PHPCMS默认的后台样式用着不习惯,根前台的视觉差太大?没关系,改一下就是了。 后台编辑器样式文件 staticsjsckeditorcontents.css 把前台样式表中控制文字的那一部分拷贝进去稍微修改下即可,当然你可以自定义编辑器背景什么的,看个人喜好了。 我自己比较喜欢的样式现在分享给大家
李维亮
2021/07/09
1.4K0
CSS样式更改——列表、表格和轮廓
上篇文章主要介绍了CSS样式更改篇中的字体设置Font&边框Border设置,这篇文章分享列表、表格和轮廓,一起来看看吧。
前端皮皮
2020/11/26
2.9K0
elementuitable样式更改_elementui下拉框
表格样式修改(表头高、表头边框、表格内边框、表格行高) //控制表头高度 .el-table /deep/ .el-table__header th { padding: 0; height: 40px; line-height: 40px; //表头边框设置 border:solid #cccccc; border-width:1px 0px 0px 1px; } //添加表格行边框 .el-table /deep/ td{ border:solid #cccccc; border-width:1px 0px 0px 1px; } // table右下外边框颜色 .el-table–border:after, .el-table–group:after, .el-table:before { background-color: #cccccc; } //表格上左外边框 .el-table–border, .el-table–group { border-color: #cccccc; } //表头背景色 :header-cell-style=”{background:’#e0e4e5’}” //表格行高还需要设置padding :cell-style=”{padding:‘0px’}”
全栈程序员站长
2022/09/30
6330
Vue 父组件更改子组件样式
中 scoped 是受保护的,当 <style> 标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素。这类似于 Shadow DOM 中的样式封装固更改子组件的style时是失效的
White feathe
2022/05/11
1.8K0

相似问题

JavaCV画布保持空白

20

CSS div样式,javascript画布颜色更改

30

Javascript画布空白图像

11

空白画布HTML,JavaScript

12

Tkinter对象空白画布?

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文