提问人:HazNut 提问时间:8/15/2023 最后编辑:HazNut 更新时间:8/15/2023 访问量:17
在查询字符串中包含邮政编码和/或姓氏是否存在安全问题?
Is it a security issue to include postcode and/or last name in a query string?
问:
我目前正在设计一个端点来验证客户,他们可以输入他们的邮政编码或姓氏,以及他们的客户 ID(以及其他一些不相关的数据)。
我听说在查询字符串中包含 PII 或敏感数据可能会带来安全风险。我找不到很多关于这方面的信息,除了不包括密码等明显的东西。
此终结点对邮政编码或姓氏使用一个查询字符串参数(显然不理想,但这是一个限制)。如果有人可以访问服务器日志,是否可以关联来自一个用户的多个请求,这可能会导致通过组合其邮政编码和姓氏来识别该人?至少通过查看他们的浏览器历史记录,这可能是可能的,所以这可能是一个问题。
将此验证作为 POST 请求进行是否更可取?我不确定它在什么时候成为安全风险,什么样的数据可以安全地包含在查询字符串中,以及数据在什么时候成为个人标识,或者这是否真的是一个问题。
编辑:看看流行的API,如Stripe和Shopify,似乎他们使用查询字符串进行客户搜索,但Salesforce使用POST进行搜索,因此不确定该走哪条路。
目前,我们正在考虑将其作为 POST 来执行,但这可能会违反 REST,因为我们“获取”了客户的有效性,而不是真正进行搜索,而 POST 更适合搜索。
答:
是否可以获取 Web 服务器日志,例如从 ISP 运营的代理服务器中获取日志,通过 IP 地址将它们关联起来,并在特定人员身上收集 PII?
是的。
确实,避免将个人姓名、用户 ID 和邮政编码等内容放在 URL 参数字符串中,而是将它们放在请求正文中,确实更安全。当然,这意味着请求不能是 GET 请求。尽可能这样做是对用户隐私的最尊重。因此,如果您有某种搜索表单或操作,请使用 POST。
至于它不是完美的 RESTful,那又怎样?请记住,REST在HTTP协议设计之后很久就出现了。用户隐私比遵守一个分层协议在另一个协议(REST / HTTP / TCP / IP)之上的严格理论更重要。
评论