gpt4 book ai didi

javascript - 代码摘录 : Does this create a vulnerability to XSS?

转载 作者:行者123 更新时间:2023-11-28 09:27:01 25 4
gpt4 key购买 nike

所以我对 JavaScript 比较陌生,尽管我一直在做 HTML/CSS UI 前端工作(我知道这是亵渎),并且正在开发我自己的样板文件以用于 future 的元素。我对从 XSS、CodeInjection 等保护代码的想法也很陌生。

以下是我一直在努力的完整工作摘录。在生产中,JavaScript 将被缩小并从外部文件加载,而不是内联加载,这只是为了便于使用的示例。

我想知道通过将变量输出创建为纯文本并通过 document.getElementById("x").href 插入它是否会为 CSS 攻击等漏洞留下漏洞。有大量关于这些类型漏洞的信息,但作为安全代码环境的相对新手,它令人望而生畏并且有点不知所措。

PS,<p></p>也只是为了测试。

提前感谢大家!

对于代码:

<!DOCTYPE html>

<html>
<head>
<meta charset="utf-8" />
<title>Title</title>

<!-- required CSS -->

<!-- conditional CSS -->
<link rel="stylesheet" type="text/css" href="assets/css/mq/null" id="mediaquery" />
</head>

<body>

<p id="test"></p>

<script type="text/javascript">
(function setCSS() {
if (window.matchMedia("screen and (max-width: 767px)").matches) {
layout = "mobile";
} else if (window.matchMedia("screen and (min-width: 768px) and (max-width: 1024px)").matches) {
layout = "tablet";
} else if (window.matchMedia("screen and (min-width: 1025px) and (max-width: 1280px)").matches) {
layout = "desktop";
} else if (window.matchMedia("screen and (min-width: 1281px)").matches) {
layout = "xldesktop";
}
window.addEventListener('resize', setCSS, false);
document.getElementById("test").innerHTML = layout;
document.getElementById("mediaquery").href = 'assets/css/mq/device.'+layout+'.css';
})();
</script>

</body>
</html>

最佳答案

您发布的代码中唯一可能导致 XSS 漏洞的部分是

document.getElementById("test").innerHTML = layout;

如果您正在设置 innerHTML 并且您的布局变量中有任何可以由用户控制的 HTML,那么这可能是一个攻击向量。但是,在这种情况下,layout 似乎是 mobiletabletdesktopxldesktop 之一

如果您想包含任何用户集内容或来自不受信任来源的内容,您应该 HTML encode your output .在这种情况下,我不会接受接受的答案,因为它似乎不包含对于 XSS 预防必不可少的单引号或双引号字符,但 Anentropic 的答案将使您的输出在 HTML 上下文中安全输出。

function htmlEscape(str) {
return String(str)
.replace(/&/g, '&amp;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
}

需要对引号字符进行编码,因为如果您输出到带引号的属性值,那么恶意用户可能会逃避此上下文。请注意,如果您输出到未加引号的属性值,那么您必须 escape all characters with ASCII values less than 256 except for alphanumeric characters .

另一种方法是使用 JQuery,您可以在其中设置 text属性而不是 html .

关于javascript - 代码摘录 : Does this create a vulnerability to XSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25853425/

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