我想从应用程序后端检索数据。为此,我必须通过来自前端网站的 API 请求发送用户的电子邮件。
在 GET 请求或 POST 请求中发送用户电子邮件是好的做法吗?更具体地说,因为您不想让其他第三方看到它,所以不将用户电子邮件作为 URL 参数包含在内是一种好习惯吗?
谢谢
您绝对希望使用
POST
请求而不是 GET
请求来查询电子邮件地址,因为 GET
请求应该 never 用于发送敏感信息。
记住这一点,您还必须首先考虑您对端点所做的事情。如果您只是请求有关电子邮件地址的 public 信息(例如解析服务器名称或 IP),那么也许
GET
请求就足够了。
请记住,不能通过 GET 请求传递任何授权标头,因此如果您要查询相关电子邮件地址是否在您的网站上注册了帐户,任何人 都可以找到您的用户通过垃圾邮件请求发送电子邮件地址,直到他们收到 200 响应(从而验证注册电子邮件)。并且知道有效用户的电子邮件地址可以在后期作为攻击媒介。
简而言之,您很可能想要
POST
。仅在您纯粹查询有关电子邮件托管域的信息时才使用GET
。
好吧,POST 请求更适合从日志中隐藏 GET 参数。 您能做的最好的事情就是加密正在传输的数据。您可以将 POST 请求与 SSL 加密一起使用,这对于常规系统来说已经足够了。
切勿在网址或查询字符串中使用任何个人身份信息。使用该上下文、会话或状态唯一的标识符,例如与其他地方的个人身份信息相关的 UUID。
您使用什么动词(GET、POST 等)将决定接收方(服务器)传统上支持的功能。一个示例是 GET 与 POST,其中使用 POST 动词,服务器将允许您将“正文”作为 HTTP 请求有效负载的一部分传递,从而允许您发送查询字符串之外的其他信息。这是符合规范的。
事实上,您可以(最好)使用 HTTP 标头来传递基于身份验证的信息,例如所有 HTTP 动词的 JWT 令牌,前提是客户端(几乎所有)都支持它。
在发出 HTTP 请求的一天结束时,您将发送一个单独的工作单元作为“请求”,这是一个符合 HTTP 规范的纯文本有效负载,并将标头、正文等组合到其中。