【问题标题】:Getting reflected Cross-Site Scripting (XSS) attack in node js在节点 js 中获得反射的跨站点脚本 (XSS) 攻击
【发布时间】:2021-04-26 10:13:32
【问题描述】:

我在以下代码块中受到反射跨站点脚本 (XSS) 攻击,

   const getData = async function (req, res) {
      const { query } = req.body;
      const requestBody = formRequestBody(query);
      const { authorization } = req.headers;
      try {
        const { data } = await axios(url, {
          body: requestBody,
          headers: {
            Authorization: authorization
          }
        });
        if (data) {
          res.send(data);
        }
      } catch (error) {
        console.log(error);
      }
    };

我尝试添加一个卫生功能并清理查询字符串,如下所示,

const sanitizeString = (string) => {
  const escapeCharsMap = {
    '&': '&',
    '<': '&lt;',
    '>': '&gt;',
    '"': '&quot;',
    "'": '&#x27;',
    '/': '&#x2F;'
  };
  const reg = /[&<>"'/]/gi;
  return string.replace(reg, (match) => escapeCharsMap[match]);
};

我将formRequestBody(query) 更改为formRequestBody(sanitizeString(query)),仍然遇到问题。

我该如何解决?

【问题讨论】:

    标签: javascript node.js security xss


    【解决方案1】:

    XSS 攻击的工作原理是攻击者诱骗用户发出特定请求,通常是通过攻击者的网站。

    更改从您的站点发出请求的代码不会对攻击者站点上运行的代码产生任何影响。

    url 指向的任何内容生成输出时,您需要防御 XSS,而不是通过控制从您的站点对其的输入。

    【讨论】:

      最近更新 更多