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

7
我希望从应用程序的后端检索数据。为了做到这一点,我必须通过前端网站发送用户的电子邮件来进行API请求。
在GET请求或POST请求中发送用户电子邮件是良好的实践吗?更具体地说,不将用户电子邮件作为URL参数包含在内,因为您不希望其他第三方看到它,这是一个好的实践吗?
谢谢
3个回答

9
在查询电子邮件地址时,您绝对希望使用POST请求而不是GET请求,因为GET请求永远不应该用于发送敏感信息。
考虑到这一点,您还必须考虑首先要做什么。如果您只是请求有关电子邮件地址的公共信息(例如解析服务器名称或IP),那么也许GET请求就足够了。
请记住,您不能在GET请求中传递任何授权标头,因此,如果您正在查询有关所讨论的电子邮件地址是否在您的网站上注册了帐户之类的信息,任何人都可以通过垃圾请求找出您用户的电子邮件地址,直到他们获得200响应(从而确认已注册的电子邮件)。并且知道一个有效用户的电子邮件地址可能会在以后作为攻击向量。
简而言之,您最有可能需要使用POST。仅在纯粹查询托管电子邮件的域名信息时使用GET

16
请注意,您无法在 GET 请求中传递任何授权头信息,并不准确。您完全可以传递它(以及任何其他 HTTP 头信息)。在 GET 请求中不能传递的是消息正文,因此如果您使用 GET 而不是 POST,则必须使用 URL 查询字符串或自定义 HTTP 标头来传递正在查询的电子邮件地址。 - Remy Lebeau

5

POST请求比GET请求更好,因为它可以隐藏GET参数不被记录在日志中。最好的方法是加密传输的数据。您可以使用带有SSL加密的POST请求,这对于常规系统来说已经足够好了。


0

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

您使用的动词(GET、POST等)将决定接收者(服务器)传统上支持的功能。一个例子是GET与POST,使用POST动词,服务器将允许您通过HTTP请求有效载荷的一部分传递“主体”,从而使您能够发送超出查询字符串的附加信息。这是根据规范来的。

实际上(并且最好)可以使用HTTP头来传递基于身份验证的信息,例如JWT令牌,对于所有HTTP动词,只要客户端(几乎全部)支持它。

在一天结束时,当进行HTTP请求时,您正在发送一个作为“请求”的单个工作单元,它是符合HTTP规范的纯文本有效载荷,并将头部、主体等组合到其中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接