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");