最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何防止使用数字数据进行SQL注入

IT培训 admin 12浏览 0评论

如何防止使用数字数据进行SQL注入

我编写了简短的源代码,效果很好。但是我想防止SQL注入。因为此代码无法阻止SQL注入。

这是我的原始代码

router.get(`/sitemap/:page`, function(req, res, next) {
  let pageNumber = String(req.params.page) + "00";
  db.query(
    `SELECT * FROM user order by displayId*1 LIMIT ${pageNumber}, 100`,
    function(error, data) {
      if (error) {
        throw error;
      }
      // console.log(data);
      res.render("sitemap", {
        dataarray: data,
        pageNumber: pageNumber
      });
    }
  );
});

而且效果很好,但是不能阻止SQL注入,因此我尝试了此方法,但是由于'字符而导致错误。

Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?, 100' at line 1

[[尝试另一种方法]

router.get(`/sitemap/:page`, function(req, res, next) {
  let pageNumber = String(req.params.page) + "00";
  db.query(
    `SELECT * FROM user order by displayId*1 LIMIT ?, 100`,
    [pageNumber], // I FIX THIS PART!!!!
    function(error, data) {
      if (error) {
        throw error;
      }
      // console.log(data);
      res.render("sitemap", {
        dataarray: data,
        pageNumber: pageNumber
      });
    }
  );
});

我该如何解决这个问题。我认为应该是字符串,所以我尝试了String(pageNumber),但仍然无法正常工作。

回答如下:

首选使用变量中的值,避免使用内联查询,尝试使用存储过程。

如何防止使用数字数据进行SQL注入

我编写了简短的源代码,效果很好。但是我想防止SQL注入。因为此代码无法阻止SQL注入。

这是我的原始代码

router.get(`/sitemap/:page`, function(req, res, next) {
  let pageNumber = String(req.params.page) + "00";
  db.query(
    `SELECT * FROM user order by displayId*1 LIMIT ${pageNumber}, 100`,
    function(error, data) {
      if (error) {
        throw error;
      }
      // console.log(data);
      res.render("sitemap", {
        dataarray: data,
        pageNumber: pageNumber
      });
    }
  );
});

而且效果很好,但是不能阻止SQL注入,因此我尝试了此方法,但是由于'字符而导致错误。

Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?, 100' at line 1

[[尝试另一种方法]

router.get(`/sitemap/:page`, function(req, res, next) {
  let pageNumber = String(req.params.page) + "00";
  db.query(
    `SELECT * FROM user order by displayId*1 LIMIT ?, 100`,
    [pageNumber], // I FIX THIS PART!!!!
    function(error, data) {
      if (error) {
        throw error;
      }
      // console.log(data);
      res.render("sitemap", {
        dataarray: data,
        pageNumber: pageNumber
      });
    }
  );
});

我该如何解决这个问题。我认为应该是字符串,所以我尝试了String(pageNumber),但仍然无法正常工作。

回答如下:

首选使用变量中的值,避免使用内联查询,尝试使用存储过程。

发布评论

评论列表 (0)

  1. 暂无评论