Express.js - 请求者 domain/IP 可靠性
Express.js - Requester domain/IP reliability
我最近看到 this SO post 关于获取请求的域。我想知道此信息是否可靠(即攻击者可以 "fake" 此信息吗?)。具体来说,域和请求类型(GET、POST 等)。我问的原因是因为我不确定我是否可以使用它来保护我的应用程序的后端。我认为我应该只允许 POST 来自我自己域的请求。
客户端(如浏览器)发送的请求并非来自特定域。它们来自客户端的 IP 地址。该客户端可能是来自特定站点的 运行 网页,但请求中包含的任何信息都不能被信任,并且可以被欺骗为客户端想要的任何内容。再想想这个。客户端请求不是来自域。它们来自客户端,该客户端在发出 API 请求之前可能已收到或未收到来自特定域的网页。
所以,不,您不能使用 client-supplied 页面域信息来实现任何合理的安全措施。如果请求确实包含有关请求代码来自哪个网页的信息,则该信息很容易被恶意客户端欺骗。
从浏览器使用的 APIs 可以要求与登录用户结合使用(通过登录 cookie 或登录后获得的某种安全令牌),但不能 "secured" 除此之外。对于能够访问您的 API 的浏览器,包括流氓客户端在内的任何其他客户端也可以访问 API。
像 Google 这样的人在他们的 API 上使用的保护类型是:
- API 允许他们跟踪特定令牌使用情况的令牌 and/or 撤销滥用服务的令牌
- 评级限制以防止特定 API 用户或 IP 地址滥用 API 服务
- 许可使用许可,然后 server-side 跟踪允许或不允许使用的内容
- 监控登录用户的使用情况以撤销滥用服务的登录 API
- Short-lived API 在网页中动态生成并定期更改的令牌。
因此,在允许访问您的服务之前,您可以要求一个 API 帐户或用户登录。除此之外,人们通常会保护 API 不被滥用,同时也意识到确定的自定义客户端仍然可以访问 API.
I figured that I should only allow POST requests from my own domain.
您应该只允许来自有效登录用户的 POST 请求(每个 API 请求都需要登录凭据)并且您应该只允许它们影响该特定用户拥有的数据修改权。您无法控制请求的来源或执行请求的客户端类型。
我最近看到 this SO post 关于获取请求的域。我想知道此信息是否可靠(即攻击者可以 "fake" 此信息吗?)。具体来说,域和请求类型(GET、POST 等)。我问的原因是因为我不确定我是否可以使用它来保护我的应用程序的后端。我认为我应该只允许 POST 来自我自己域的请求。
客户端(如浏览器)发送的请求并非来自特定域。它们来自客户端的 IP 地址。该客户端可能是来自特定站点的 运行 网页,但请求中包含的任何信息都不能被信任,并且可以被欺骗为客户端想要的任何内容。再想想这个。客户端请求不是来自域。它们来自客户端,该客户端在发出 API 请求之前可能已收到或未收到来自特定域的网页。
所以,不,您不能使用 client-supplied 页面域信息来实现任何合理的安全措施。如果请求确实包含有关请求代码来自哪个网页的信息,则该信息很容易被恶意客户端欺骗。
从浏览器使用的APIs 可以要求与登录用户结合使用(通过登录 cookie 或登录后获得的某种安全令牌),但不能 "secured" 除此之外。对于能够访问您的 API 的浏览器,包括流氓客户端在内的任何其他客户端也可以访问 API。
像 Google 这样的人在他们的 API 上使用的保护类型是:
- API 允许他们跟踪特定令牌使用情况的令牌 and/or 撤销滥用服务的令牌
- 评级限制以防止特定 API 用户或 IP 地址滥用 API 服务
- 许可使用许可,然后 server-side 跟踪允许或不允许使用的内容
- 监控登录用户的使用情况以撤销滥用服务的登录 API
- Short-lived API 在网页中动态生成并定期更改的令牌。
因此,在允许访问您的服务之前,您可以要求一个 API 帐户或用户登录。除此之外,人们通常会保护 API 不被滥用,同时也意识到确定的自定义客户端仍然可以访问 API.
I figured that I should only allow POST requests from my own domain.
您应该只允许来自有效登录用户的 POST 请求(每个 API 请求都需要登录凭据)并且您应该只允许它们影响该特定用户拥有的数据修改权。您无法控制请求的来源或执行请求的客户端类型。