gpt4 book ai didi

javascript - 使用 NextJS 确保敏感代码仅在服务器端运行,这些代码可以从哪里运行?

转载 作者:行者123 更新时间:2023-12-05 00:31:03 35 4
gpt4 key购买 nike

我正在学习 NextJS,我正在尝试确定如何使用一个干净且安全的架构来布局我的项目。但是,我不确定在哪里存储包含潜在敏感数据的代码(即与数据库的连接、访问文件系统等)。我已经阅读了文档,但我仍然不确定这个问题。
在我的项目布局中,我有 2 个与此问题相关的目录:顶级 /lib我添加了 /pages/api包含在每个 NextJS 项目中的目录。
据我了解/pages/api永远不会看到客户端,因此对于敏感代码是安全的。它应该只用作进行发布、修补、删除等操作的地方。 /pages/api 的示例当您从表单向服务器发出 post 请求时使用。您可以从 ANYWHERE 调用此路由的 api,例如:表单组件,/lib文件夹,/pages 中的一个页面, 外部 3rd 方 api - 任何地方。
另一方面,顶级/lib目录,是样板代码的地方,执行繁琐的操作,例如按字母顺序将博客文章排序,进行数学计算等,这些操作不一定是“ secret ”或敏感的 - 只是冗长而烦人的代码。 /lib目录总是会被客户端看到——即使它的代码只被服务器端方法调用,例如 getStaticProps() .
简而言之,任何远程敏感的东西都应该作为帖子、补丁、放置等请求发送到 /pages/api。目录,任何不敏感的冗长乏味的代码都应该重构为 /lib目录。
我有这个好吗?

最佳答案

你可以在 api 路由中做你敏感的事情,getServerSideProps , getStaticProps . /lib 中没有您的代码除非您的页面实际从那里导入代码,否则客户端会看到。
由于您在谈论数据库连接,因此您不太可能意外地从浏览器连接到您的数据库。几乎所有用于连接 db 的库都不能在浏览器中运行,而且您也只能访问以 NEXT_PUBLIC_ 开头的环境变量在客户端。
您还需要记住 /api 下的每个文件将是一个 api 路由,所以你应该把你的帮助文件放在 /lib而不是 /api .如果你把它们放在 /api 下这可能导致安全漏洞,因为任何人都可以触发 /api 下文件的默认导出功能.
如果您出于某种原因需要绝对确定某些代码没有捆绑到客户端将加载的文件中,即使您不小心导入了它,也可以使用自定义 webpack 配置来完成。请注意,如果代码本身非常敏感,我只会考虑这个选项。因为有人能够阅读代码会导致后果。不谈论执行数据库查询或类似操作的代码,即使您不小心将它们导入客户端捆绑包,也不会构成任何威胁,因为客户端无法连接到您的数据库。

关于javascript - 使用 NextJS 确保敏感代码仅在服务器端运行,这些代码可以从哪里运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72119806/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com