内部文档数据替换为 NodeJS


Inner document data replace with NodeJS

所以,我对 NodeJS 和任何编程都相当陌生,我不确定我是否正确。 我从 9 岁或 10 岁(目前 13 岁)开始练习这样的事情。 因此,在我深入研究 NodeJS 之前,我想确保我正确使用它。

所以,在使用 PHP 一段时间后。 您可以简单地"回显"文档中的某些内容以从服务器返回数据,例如 IP 地址。

<?php
  echo $_SERVER["REMOTE_ADDR"];
?>

这将有效地回显用户的IP,无论PHP位位于文档中的哪个位置 - 由Apache的模块解析(对吗?

这有什么坏处? 有没有办法在文档中重新创建 NodeJS 语法,然后由 NodeJS HTTP 服务器解析以获取任何 NodeJS,比如说<nodejs>script</nodejs>

所以,用更简短、更容易理解的术语来说。在显示之前将 NodeJS 从文档中取出在技术上是否安全 - 评估 Nodejs 脚本,然后将其删除并显示。

虽然这听起来有点粗略。 所以我目前正在使用另一种方法。 但我不确定这在技术上是否安全。

现在,在文档中,我会有类似 <p>Your IP is [*IP*]</p> 的东西,我使用 NodeJS 的文件系统模块来做这样的事情:

app.get("/", function(req, res){
  res.send(fs.readFileSync(__dirname + "index.html").replace(/'['*IP'*']/g, req.connection.remoteAddress));
});

虽然,这对我来说似乎有点麻烦。 由于我在Web开发的安全方面没有太多经验,我希望我能了解一下这是安全还是不安全。我将如何实现这一点?

感谢您抽出宝贵时间阅读并帮助我提高对这个主题的了解!

我不认为这是一个安全问题或类似的东西,而是Node.js与PHP相比如何工作的问题。

正如你正确编写的那样,PHP基本上是基于文件的。因此,您创建一个扩展名为.php的文本文件,将HTML标记和一些逻辑(例如打印IP地址)放入其中,仅此而已。其余的由Web服务器完成,主要是Apache,它通过"PHP引擎"将每个请求发送到.php文件,该引擎解释您的代码并将结果呈现给客户端(在您的情况下是您的浏览器)。

Node.js 不是这样工作的。与其寻找一个然后被解释和返回的文件,最常见(不是唯一的)方法是使用处理请求的"中间件"。

首先,它负责每个请求的"端点"。从广义上讲,您可以为每个路由注册一个函数,就像您在路由"/"的示例代码中所做的那样(也可以是("/what-is-my-ip")。

该函数是您的"控制器操作",可以执行一些业务逻辑,例如获取 IP 地址。

完成后,它将结果传递给视图引擎,或者只是通过该引擎返回一个简单的视图。

视图基本上就是你的.php,但它不包含任何逻辑,这是与PHP的主要区别。

它主要在模型视图控制器模式之后工作。

一些视图引擎:

  • 车把:https://www.npmjs.org/package/express-handlebars
  • 翡翠:https://www.npmjs.org/package/jade
  • 瓦什:https://www.npmjs.org/package/vash
  • EJS: https://www.npmjs.org/package/ejs