我有一个需要用户输入数据库密码的应用程序。这些密码将不会保存在服务器上,并且服务器不需要在请求后记住有关数据库的任何信息。如果是我的理解,大多数Web服务器都会记录获取请求,浏览器也可以记录(即使对于fetch()请求也可以这样做)。我不想让数据库面临风险,但我也明白,您不应在GET请求中使用正文。
我也不在创建资源,因此据我了解,我不应该使用POST请求。有没有一种安全的方法来发送带有密码的获取请求(通过https),以确保该请求未登录到服务器上?这将是一个任何人都可以启动的应用程序-所以我不知道他们的服务器配置是什么,因此我无法在一个服务器上专门禁用它以忽略它。
答案 0 :(得分:1)
因此,据我了解,我不应该使用POST请求。
您的理解不正确。当其他动词都没有意义时,POST
是适当的动词。来自the spec:
POST方法要求目标资源根据资源自身的特定语义来处理请求中包含的表示形式。
简单地讲,这意味着POST会执行服务说明的操作。它不是safe,idempotent或cacheable,因此仅将其用于所有内容存在弊端,但其目的是使其成为包罗万象的动词。
您不应使用GET
,因为如前所述,您不应包含正文,而且经常会记录URL,这会暴露您的凭据。
答案 1 :(得分:1)
如果您的应用程序的客户端将是浏览器,则可以仅使用https cookie来处理身份验证流程。如果您希望它扩展或在任何其他类型的客户端中使用它,则可以使用Authorization HTTP header。