gpt4 book ai didi

Javascript 由于测试中出现双引号而失败

转载 作者:行者123 更新时间:2023-11-28 10:49:09 26 4
gpt4 key购买 nike

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

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

您可以将我的应用程序视为简单的电子邮件阅读应用程序。我从数据库中读取的任何电子邮件,即使它有不正确/有缺陷的 html,我也不希望它破坏我的代码。

请让我知道如何解决此问题

我正在努力关注以下内容- 拉维尔- Bootstrap

最佳答案

始终转义从客户端收到的数据,否则您将成为 XSS(跨站脚本)的受害者。

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

  1. IFrame
  2. 影子 DOM

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

以下是两者的示例。 Same on JSFiddle

<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>

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

关于Javascript 由于测试中出现双引号而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36686073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com