在 GET 请求中发送用户电子邮件是否安全?

问题描述 投票:0回答:3

我想从应用程序后端检索数据。为此,我必须通过来自前端网站的 API 请求发送用户的电子邮件。

在 GET 请求或 POST 请求中发送用户电子邮件是好的做法吗?更具体地说,因为您不想让其他第三方看到它,所以不将用户电子邮件作为 URL 参数包含在内是一种好习惯吗?

谢谢

http security get
3个回答
10
投票

您绝对希望使用

POST
请求而不是
GET
请求来查询电子邮件地址,因为
GET
请求应该 never 用于发送敏感信息。

记住这一点,您还必须首先考虑您对端点所做的事情。如果您只是请求有关电子邮件地址的 public 信息(例如解析服务器名称或 IP),那么也许

GET
请求就足够了。

请记住,不能通过 GET 请求传递任何授权标头,因此如果您要查询相关电子邮件地址是否在您的网站上注册了帐户,任何人 都可以找到您的用户通过垃圾邮件请求发送电子邮件地址,直到他们收到 200 响应(从而验证注册电子邮件)。并且知道有效用户的电子邮件地址可以在后期作为攻击媒介。

简而言之,您很可能想要

POST
。仅在您纯粹查询有关电子邮件托管域的信息时才使用
GET


5
投票

好吧,POST 请求更适合从日志中隐藏 GET 参数。 您能做的最好的事情就是加密正在传输的数据。您可以将 POST 请求与 SSL 加密一起使用,这对于常规系统来说已经足够了。


0
投票

切勿在网址或查询字符串中使用任何个人身份信息。使用该上下文、会话或状态唯一的标识符,例如与其他地方的个人身份信息相关的 UUID。

您使用什么动词(GET、POST 等)将决定接收方(服务器)传统上支持的功能。一个示例是 GET 与 POST,其中使用 POST 动词,服务器将允许您将“正文”作为 HTTP 请求有效负载的一部分传递,从而允许您发送查询字符串之外的其他信息。这是符合规范的。

事实上,您可以(最好)使用 HTTP 标头来传递基于身份验证的信息,例如所有 HTTP 动词的 JWT 令牌,前提是客户端(几乎所有)都支持它。

在发出 HTTP 请求的一天结束时,您将发送一个单独的工作单元作为“请求”,这是一个符合 HTTP 规范的纯文本有效负载,并将标头、正文等组合到其中。

© www.soinside.com 2019 - 2024. All rights reserved.