【问题标题】:regex with javascript - my 'injection' check needs to return true带有 javascript 的正则表达式 - 我的“注入”检查需要返回 true
【发布时间】:2017-11-19 18:30:37
【问题描述】:

基本上,我有一个代码 sn-p 不起作用,我有点纠结。我是 Node.js 的新手,现在我正在使用 express 和一个非常简单的 MVC 配置。一切运行良好,如果我硬将返回设置为 false,表单输入会按原样停止。只是这个函数 - regex.test(first_name) - 即使 first_name 是“>>”仍然会返回 false。我在 Rubular 中测试了正则表达式,所以我知道它是正确的。我错过了什么?我很确定 npm/regex 实现有一些我不习惯的东西(我来自 Rails)。

module.exports = {

validate_form_submission: function (first_name, last_name, street_address, city, state, zip) {

    var Regex = require("regex");
    var regex = new Regex(/([<>\/])/);
    var function_reply = true;

    //validate presence of fields
    if (!(first_name) || !(last_name) || !(street_address) || !(city) || !(state) || !(zip))
    {
        function_reply = false;
    };

    //check for SQL injection
    if ((regex.test(first_name)) || regex.test(last_name) || regex.test(street_address) || regex.test(city) || regex.test(state) || regex.test(zip))
    {
        function_reply = false;
    };

  return function_reply;
}

}

【问题讨论】:

  • 为什么一定要require("regex")?正则表达式是 JavaScript 中的本机值类型,不需要节点模块即可工作。你可以写var regex = /([&lt;&gt;\/])/;我不知道这是否能解决你的问题,但这里不需要节点模块。
  • 好的,我会试试的。谢谢!编辑:那行得通。嘘 npm 正则表达式模块。谢谢你的提示。如果我只用 'var regex = /([\/])/;' 切换两个 'var (R/r)egex' 调用
  • 我对我认为你正在测试的东西做了一个小小的改动。我只在示例中使用了 first_name 作为概念证明。这是您期望的输出吗? jsfiddle.net/ecknd13r
  • 好的,谢谢!不知道为什么 npm 模块会碍事,但确实如此。感谢您的帮助。
  • 没问题!我以前从未使用过 npm 模块,它似乎没有必要,所以它抛出了一个危险信号。很高兴它对你有用!

标签: javascript node.js regex


【解决方案1】:

npm 正则表达式模块不需要在那里。 最终代码:

module.exports = {

    validate_form_submission: function (first_name, last_name, street_address, city, state, zip) {

        var regex = /([<>\/])/;
        var function_reply = true;

        //validate presence of fields
        if (!(first_name) || !(last_name) || !(street_address) || !(city) || !(state) || !(zip))
        {
            function_reply = false;
        };

        //check for SQL injection
        if ((regex.test(first_name)) || regex.test(last_name) || regex.test(street_address) || regex.test(city) || regex.test(state) || regex.test(zip))
        {
            function_reply = false;
        };

        return function_reply;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多