Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Node.js中的eval,使用提交按钮和输入文本向服务器发送请求_Javascript_Html_Node.js - Fatal编程技术网

Javascript 使用Node.js中的eval,使用提交按钮和输入文本向服务器发送请求

Javascript 使用Node.js中的eval,使用提交按钮和输入文本向服务器发送请求,javascript,html,node.js,Javascript,Html,Node.js,这就是我想要达到的目标 我想创建一个非常简单的节点应用程序,通过创建一个输入文本框和一个提交按钮,我可以使用eval功能。我希望能够在文本框中写入内容,并在点击submit时使用eval功能将此参数发送到服务器 因此,如果我在文本框中写入while(true),由于eval漏洞,这将导致对服务器的DoS攻击 这是我目前的代码(修复程序无法正常工作) var http=require(“http”); var server=http.createServer(函数(请求,res){ res.wri

这就是我想要达到的目标

我想创建一个非常简单的节点应用程序,通过创建一个输入文本框和一个提交按钮,我可以使用
eval
功能。我希望能够在文本框中写入内容,并在点击submit时使用
eval
功能将此参数发送到服务器

因此,如果我在文本框中写入
while(true)
,由于
eval
漏洞,这将导致对服务器的DoS攻击

这是我目前的代码(修复程序无法正常工作)

var http=require(“http”);
var server=http.createServer(函数(请求,res){
res.writeHead(200,{“内容类型”:“text/html”});
res.write(“”);
res.write(“”);
res.write(“你好世界页面”);
res.write(“”);
res.write(“”);
res.write(“输入一些文本”);
res.write(“”);

res.write(“首先-这是一篇关于这个主题的好文章:

对html的几个小更改:

  • 我添加了一个表单元素,其操作和方法设置为POST。您还可以使用GET来避免下面(…)
逻辑中的一些
req.on
  • 添加了提交按钮的结束括号-你有一个拼写错误
  • 读取已发布表单数据时,您需要读取所有传入的数据,直到完成。req参数是一个事件发射器,因此您可以使用:

    req.on('data', function(chunk) {...}
    req.on('end', function() {...}
    
    缓冲传入数据,然后在到达请求结束时对其执行操作

    表单数据是经过编码的,因此需要使用querystring模块对其进行解析

    我还添加了足够的错误检查(并修复了一些命名错误),以使代码在基本级别上正常工作

    代码:

    var http=require(“http”);
    var querystring=require('querystring');
    var util=require('util');
    var server=http.createServer(函数(req,res){
    var body=“”;
    请求on('data',函数(块){
    body+=块;
    });
    请求开启('end',函数(){
    console.log('POSTed:'+body);
    body=querystring.parse(body);
    console.log('decoded:'+util.inspect(body));
    res.writeHead(200,{“内容类型”:“text/html”});
    res.write(“”);
    res.write(“”);
    res.write(“你好世界页面”);
    res.write(“”);
    res.write(“”);
    res.write(“输入一些文本”);
    res.write(“”);
    res.write(“”);
    res.write(“”);
    res.write(“”);
    if(body.fname){
    var参数=eval(body.fname);
    console.log(util.inspect(参数));
    if(参数){
    res.write(参数);
    }
    }
    res.write(“”);
    res.write(“”);
    res.end();
    });
    });
    听(1337);
    log(“服务器正在侦听”);
    
    那么它到底是如何工作的呢?如果您键入一些内容并提交,会发生什么情况?嗯,我认为代码中的某些内容是错误的,特别是eval(req.body.fname)因为submit按钮没有链接到eval参数,所以当点击submit时,它应该将输入中的书面文本传递给eval,但这是Im有点丢失的地方。
    req.body
    属性不是本机HTTP模块的一部分,而是Express库的一部分。您需要从orde中读取请求流你能给我举个例子吗?:)非常感谢!非常感谢你的帮助
    req.on('data', function(chunk) {...}
    req.on('end', function() {...}
    
    var http = require("http");
    var querystring = require('querystring');
    var util = require('util');
    
    var server = http.createServer(function(req, res) {
      var body = "";
      req.on('data', function (chunk) {
        body += chunk;
      });
      req.on('end', function () {
        console.log('POSTed: ' + body);
    
        body = querystring.parse(body);
        console.log('decoded: ' + util.inspect(body));
    
        res.writeHead(200, {"Content-Type": "text/html"});
        res.write("<html>");
        res.write("<head>");
        res.write("<title>Hello World Page</title>");
        res.write("</head>");
        res.write("<body>");
        res.write("Enter Some text");
    
        res.write('<form action="/" method="post">');
        res.write('<input type="text" name="fname">');
    
        res.write('<input type="submit" value="Submit">');
        res.write('</form>');
    
        if(body.fname) {
          var parameter = eval(body.fname);
    
          console.log(util.inspect(parameter));
          if(parameter) {
            res.write(parameter);
          }
        }
        res.write("</body>");
        res.write("</html>");
        res.end();
      });
    });
    
    server.listen(1337);
    console.log("Server is listening");