首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在将用户输入字符串注入模板引擎或简单的JS模板字符串之前,如何清理nodejs中的用户输入字符串?

在将用户输入字符串注入模板引擎或简单的JS模板字符串之前,如何清理nodejs中的用户输入字符串?
EN

Stack Overflow用户
提问于 2022-02-13 14:01:58
回答 1查看 1.5K关注 0票数 0

我有网页(基本上是名片),其标题是根据用户的输入创建的。为此,我计划使用简单的JS模板字符串,而不是一些模板引擎。(为此目的,我使用了press.js/node.js)

代码语言:javascript
运行
复制
response.send(`
<html>

 <head>
  <title>${user_inputed_title_got_from_DB}</title>
  <meta property="og:title" content="${some_more_user_content}" />
 </head>

 <body>
  <script>
     window.location.href="/business-card/${user_input_number}";
  </script>
 </body>

</html>`)

如何避免来自恶意用户的XSS注入?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-13 14:15:09

对于普通的HTML标记,this answer should suffice

代码语言:javascript
运行
复制
function escapeHtml(unsafe)
{
    return unsafe
         .replace(/&/g, "&amp;")
         .replace(/</g, "&lt;")
         .replace(/>/g, "&gt;")
         .replace(/"/g, "&quot;")
         .replace(/'/g, "&#039;");
 }

但是,需要更小心地处理脚本标记中的重定向问题。一种常见的方法是将重定向放入属性中,该属性可以用上面的函数转义:

代码语言:javascript
运行
复制
<script data-redir="/business-card/${escapeHtml(user_input_number)}">
    window.location.href = document.currentScript.dataset.redir;
</script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71101370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档