Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >Javascript会因为测试中的双反逗号而失败

Javascript会因为测试中的双反逗号而失败
EN

Stack Overflow用户
提问于 2016-04-18 05:30:29
回答 1查看 72关注 0票数 1

我在我的数据库中保存了一些HTML格式的文本,这些文本是从电子邮件保存到数据库中的。

有时电子邮件有单开或双开的倒置逗号,但没有闭合的倒置命令。由于这个原因,页面上的其他脚本停止工作。我怎样才能防止我从数据库读取的html代码不影响我的页面样式或脚本。

你可以认为我的申请是简单的电子邮件阅读申请。我从数据库中读取的任何电子邮件,即使它有不正确的/错误的html,我也不希望它破坏我的代码。

请告诉我如何解决这个问题

我正在做following Laravel - Bootstrap

EN

回答 1

Stack Overflow用户

发布于 2016-04-18 06:47:51

始终对从客户端接收的数据进行转义,否则将成为XSS (跨站点脚本)的牺牲品。

也就是说,如果你真的想这样做,那么有两种方法可以让电子邮件的内容不会影响你的代码。

  1. IFrame
  2. Shadow DOM

这两个页面都具有与父页面不同的上下文,因此它们不会干扰您的代码,除非它们内部的代码尝试手动访问父页面。

下面是这两种方法的示例。Same on JSFiddle

代码语言:javascript
代码运行次数:0
复制
<html>
<head>

</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="iframeParent">
</div>

<div id="shadowParent">
</div>
<script>
    var emailContent = "<h1>helloworld</h1>";
    var iframeContainer = $("#iframeParent");

    $('<iframe/>').appendTo(iframeContainer).on("load", function () {
        $(this).contents().find("body").html(emailContent);//firefox
    }).contents().find("body").html(emailContent);//chrome

    var shadowContainer = $("#shadowParent");
    alert(shadowDom);
    var shadowDom = shadowContainer.get(0).createShadowRoot();
    shadowDom.innerHTML = emailContent;
</script>
</body>
</html>

注意: firefox可能不是最好的解决方案,因为在上它不是默认启用的。See this link

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

https://stackoverflow.com/questions/36686073

复制
相关文章
Spring Cloud Task 核心组件-Task Application
Spring Cloud Task是Spring Cloud生态系统中的一个重要组件,用于支持有状态的短暂任务的开发和执行。
堕落飞鸟
2023/04/16
6111
Spring Cloud Task 核心组件-Task Repository
Spring Cloud Task是一个用于构建简单任务的框架。它提供了Task Application、Task Launcher和Task Repository三个核心组件,分别用于定义和执行任务、启动和管理任务、以及存储任务相关的元数据和状态信息。其中,Task Repository是Spring Cloud Task的核心组件之一,它负责管理和存储任务相关的数据。
堕落飞鸟
2023/04/16
2880
【C# 基础精讲】Task和Task<T>的应用
当涉及异步编程时,Task 和 Task<T> 是C#中的重要概念。它们不仅是处理异步操作的关键类型,还提供了一些强大的功能和方法,使异步编程更加高效和灵活。在本文中,我们将深入探讨 Task 和 Task<T> 的应用,从创建、执行、等待到取消和异常处理等方面进行详细讨论,帮助您更好地理解如何在C#中应用这些类型。
繁依Fanyi
2023/10/12
7310
【C# 基础精讲】Task和Task<T>的应用
Spring Cloud Task 核心组件-Task Launcher
Spring Cloud Task是一个用于快速创建和执行短暂任务的框架。Task Launcher是Spring Cloud Task的另一个核心组件,它可以帮助我们在多个环境中部署和执行Task Application。
堕落飞鸟
2023/04/16
7941
Spring Cloud Task 核心组件-Task Explorer
在使用Spring Cloud Task时,我们通常需要查看已经执行的任务以及任务的执行状态等信息。而Task Explorer正是为我们提供了这些信息的组件。
堕落飞鸟
2023/04/16
5610
Spring Cloud Task 核心组件-Task Execution Listener
Spring Cloud Task是一个用于构建简单任务的框架。它提供了Task Application、Task Launcher、Task Repository等多个核心组件,分别用于定义和执行任务、启动和管理任务、以及存储任务相关的元数据和状态信息。其中,Task Execution Listener是Spring Cloud Task的核心组件之一,它用于监控和管理任务的执行过程。
堕落飞鸟
2023/04/16
6301
C++核心准则T.65:使用标签分发提供函数的不同实现
T.65: Use tag dispatch to provide alternative implementations of a function
面向对象思考
2020/09/21
1K0
C++核心准则T.64​:使用特化提供类模板的不同实现
T.64: Use specialization to provide alternative implementations of class templates
面向对象思考
2020/09/21
6740
Task和backStack(本篇章核心)
摘要总结:通过分析Task和backStack的关系,可以得出一个task内可以有多个Activity,一个Task也可以对应多个Process。同时,通过adb shell dumpsys activity命令可以观察到,一个Task内的Activity可以属于同一个App,也可以属于不同的App。通过学习源码,可以发现,在ActivityManagerService中,Task被封装成TaskRecord对象,每个Task对应一个TaskStack,每个TaskStack包含一个mHistory Stack。在mHistory Stack中,每个元素都是一个ActivityRecord对象,ActivityRecord对象通过TaskRecord与对应的Task关联,通过Activity info与对应的Activity关联。同时,同一个Task内的ActivityRecord在mHistory中会按照先入先出的顺序进行排序。
梦里茶
2017/12/29
5740
Task和backStack(本篇章核心)
T-SQL取时间的不同方法
超级实用的T-SQL取时间的不同方法 CONVERT(nvarchar(10),count_time,121): CONVERT为日期转换函数,一般就是在时间类型 (datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到的函数的3个参数,第1个参数为,转换后的大小,第2个为转换日期的字段或函数,第3个为转换的格式,具体如下: 0 | 0 or 100 | mon dd yyyy hh:miAM(或PM) 1 | 101 |
用户1719978
2018/07/05
5970
T24银行核心业务系统
http://www.pianshen.com/article/8248107255/
全栈程序员站长
2022/09/20
1.2K0
通过JavaScript实现HTTP到HTTPS的强制跳转 By HKL,
最近通过一些在线文件云空间测试云存储部署静态网站遇到HTTP到HTTPS的强制跳转的问题,平时通过nginx配置是比较简单实现的, 但是例如七牛云虽然可以设置HTTPS访问,但是不支持设置HTTP到HTTPS的强制跳转, 解决方法可以是先通过设置HSTS,通过浏览器级的强制跳转实现,但是本方法只能在webkit内核的浏览器上生效,而且由一定的时间差, 所以最后寻找到通过前端JavaScript脚本实现HTTP到HTTPS的强制跳转,代码如下
hiplon
2020/07/22
1.8K0
阻塞队列的核心方法&对阻塞的不同处理
阻塞队列,顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示:
名字是乱打的
2022/05/13
6920
阻塞队列的核心方法&对阻塞的不同处理
从T+1到T+0,浅谈PetaBase的实时流式处理
随着互联网+的进一步发展,各行业对大数据技术的应用日趋成熟,企业的信息化范围正在高速扩展。
数据狗忙忙忙
2019/08/13
2.5K0
从T+1到T+0,浅谈PetaBase的实时流式处理
【leetcode刷题】T156-不同路径
https://leetcode-cn.com/problems/unique-paths/
木又AI帮
2019/09/03
2940
PHP实现根据请求的域名跳转到不同目录 By HKL, T
使用一些PHP虚拟主机的时候,多个域名绑定到同一空间下,但是希望不同域名能通过不同目录实现访问不同网站的效果:
hiplon
2020/07/22
2.3K0
Locust性能测试工具核心技术@task和@events
Tasks和Events是Locust性能测试工具的核心技术,有了它们,Locust才能称得上是一个性能工具。
dongfanger
2021/06/10
4590
生成代码,从 T 到 T1, T2, Tn —— 自动生成多个类型的泛型
发布于 2018-01-31 05:38 更新于 2018-05-25 12:33
walterlv
2018/09/18
1.4K0
生成代码,从 T 到 T1, T2, Tn —— 自动生成多个类型的泛型
从1.6T光模块到51.2T交换芯片,寡头的狂欢!
400G网络设备产业现状:完结篇 800G网络设备产业现状:技术篇 800G网络设备产业现状:芯片篇 800G网络设备产业现状:思科篇 800G网络设备产业现状:光模块篇 当诺基亚这种老厂 都说400G已经到了拐点 那就代表400G已经是池中物 因此在早前 结束的OFC2021 800G技术成为国内外 各大光模块厂商的主战场 华安证券 在会议结束后推出的 通信行业周报对800G现状 做了一个简单明了的梳理总结 除了高端光模块 相关产业链的进展 报告将重心放在数据中心 因为以太网光模块将占
用户6874558
2023/02/15
1.2K0
从1.6T光模块到51.2T交换芯片,寡头的狂欢!
Spark Task 的执行流程② - 创建、分发 Task
task 的创建本应该放在分配 tasks 给 executors一文中进行介绍,但由于创建的过程与分发及之后的反序列化执行关系紧密,我把这一部分内容挪到了本文。
codingforfun
2018/08/24
7250
Spark Task 的执行流程② - 创建、分发 Task

相似问题

await Task<T>和Task<T>.Result有什么不同?

23

IAsyncEnumerable<T>和IEnumerable<Task<T>>有什么不同?

232

ASP.NET核心应用编程接口- ActionResult<T>与异步Task<T>

20

将Task<DbSet<T>>转换为Task<IEnumerable<T>>

36

不等待从EF核心查询返回Task<IReadOnlyCollection<T>>?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档