限制 public 访问的简单数据存储模式
A simple data storage schema to restrict public access
我一直在开发一个库,它可以让网站在他们的网站上添加评论部分。
我的想法是尽可能保持它的轻量级,因此我更喜欢使用 JSON 来存储基本数据,例如评论消息、网站和用户名。所有这些数据都是 public,可以通过 JSON 直接访问。我不介意这一点,因为无论如何评论都会 public 显示。
但是,当我希望用户在有人回复他们的评论时得到通知时,问题就出现了。电子邮件在输入字段中,但我不想将其存储在 public JSON 文件中。 是否有任何其他服务器端数据存储模式,我可以在其中私密地存储电子邮件,同时使用来自服务器端脚本的这些电子邮件来发送电子邮件?
MySQL 和其他人会使库变得笨重,因此不在列表中。
或者除了这些条件还有其他可能的方法吗?
您可以使用像 MongoDB 这样存储 JSON 文档的数据库来保存用户和评论的数据。
然后,用户集合将不会完全发送给用户,过滤电子邮件和其他敏感数据。
为此创建第二个 JSON 文件或 CSV 文件,该文件保密,将用户映射到他们的电子邮件 ID。
顺便说一句,您正在尝试的项目很有趣。祝你好运!! :)
您需要的是 APIs 而不是数据源。数据源是所有数据所在的真理。就像在您的示例中一样,如果您的数据中有电子邮件,它将始终存在。除非你单独保留电子邮件字段。
方法是创建api,它将从JSON 文件(或数据库)输出所需的数据。您可以选择隐藏不想显示的数据。
这样,您只公开 api,而不是直接公开文件名,这很容易被修改、更改或黑客攻击。
不使用 API 的其他方法是拥有多个 JSON 文件。
一个文件将包含基本数据,其他文件将包含机密数据,以及将机密或其他数据与主记录映射的外键(如唯一键)。
示例:
Comments.json:
{
"comments": [{userId: 1, ...},{...}]
}
CommentDetails.json
{...}
用户:
[
1: {"username": "", "email": "asdas@asdas.com",...}
]
为什么不在存储数据的目录中使用 .htaccess 并使用类似 "Deny from All" 的东西?
那时您的脚本可以访问,但用户的浏览器无法访问。
假设将涉及邮件服务器,您可以托管具有两个端点的 Web 服务吗?
端点:
- 发送电子邮件;使用发件人 GUID 而不是电子邮件地址
- 存储电子邮件;需要一个电子邮件地址和 returns 一个发件人 guid
您的图书馆随后可以从任何可访问 www 的服务器使用该网络服务。在 Web 服务主机上,电子邮件可以以您选择的格式存储。您还需要保护您的 Web 服务以防止其他人触发邮件通知。
我一直在开发一个库,它可以让网站在他们的网站上添加评论部分。
我的想法是尽可能保持它的轻量级,因此我更喜欢使用 JSON 来存储基本数据,例如评论消息、网站和用户名。所有这些数据都是 public,可以通过 JSON 直接访问。我不介意这一点,因为无论如何评论都会 public 显示。
但是,当我希望用户在有人回复他们的评论时得到通知时,问题就出现了。电子邮件在输入字段中,但我不想将其存储在 public JSON 文件中。 是否有任何其他服务器端数据存储模式,我可以在其中私密地存储电子邮件,同时使用来自服务器端脚本的这些电子邮件来发送电子邮件?
MySQL 和其他人会使库变得笨重,因此不在列表中。
或者除了这些条件还有其他可能的方法吗?
您可以使用像 MongoDB 这样存储 JSON 文档的数据库来保存用户和评论的数据。
然后,用户集合将不会完全发送给用户,过滤电子邮件和其他敏感数据。
为此创建第二个 JSON 文件或 CSV 文件,该文件保密,将用户映射到他们的电子邮件 ID。
顺便说一句,您正在尝试的项目很有趣。祝你好运!! :)
您需要的是 APIs 而不是数据源。数据源是所有数据所在的真理。就像在您的示例中一样,如果您的数据中有电子邮件,它将始终存在。除非你单独保留电子邮件字段。
方法是创建api,它将从JSON 文件(或数据库)输出所需的数据。您可以选择隐藏不想显示的数据。 这样,您只公开 api,而不是直接公开文件名,这很容易被修改、更改或黑客攻击。
不使用 API 的其他方法是拥有多个 JSON 文件。 一个文件将包含基本数据,其他文件将包含机密数据,以及将机密或其他数据与主记录映射的外键(如唯一键)。
示例: Comments.json:
{
"comments": [{userId: 1, ...},{...}]
}
CommentDetails.json
{...}
用户:
[
1: {"username": "", "email": "asdas@asdas.com",...}
]
为什么不在存储数据的目录中使用 .htaccess 并使用类似 "Deny from All" 的东西?
那时您的脚本可以访问,但用户的浏览器无法访问。
假设将涉及邮件服务器,您可以托管具有两个端点的 Web 服务吗?
端点:
- 发送电子邮件;使用发件人 GUID 而不是电子邮件地址
- 存储电子邮件;需要一个电子邮件地址和 returns 一个发件人 guid
您的图书馆随后可以从任何可访问 www 的服务器使用该网络服务。在 Web 服务主机上,电子邮件可以以您选择的格式存储。您还需要保护您的 Web 服务以防止其他人触发邮件通知。