Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 保护REST API的用户/密码_Asp.net_Security_Rest_Login - Fatal编程技术网

Asp.net 保护REST API的用户/密码

Asp.net 保护REST API的用户/密码,asp.net,security,rest,login,Asp.net,Security,Rest,Login,我在一个安全的ASP.NET网站上有一个web服务REST API,它需要登录才能工作。以编程方式请求用户名/密码的最安全方式是什么?(仅向URL添加一个?username=me&password=mysecret对我来说似乎并不安全(即使这是一个HTTPS连接)。有几种方法可以实现您所需的功能: [错误方式]用户可以将用户名和密码与查询字符串一起传递。理论上,这种做法没有错,但这样的URL()通常由浏览器、代理等缓存,因此可能存在其他人使用这些存储的数据访问受保护数据的风险 [好方法]为了消

我在一个安全的ASP.NET网站上有一个web服务REST API,它需要登录才能工作。以编程方式请求用户名/密码的最安全方式是什么?(仅向URL添加一个
?username=me&password=mysecret
对我来说似乎并不安全(即使这是一个HTTPS连接)。

有几种方法可以实现您所需的功能:

  • [错误方式]用户可以将用户名和密码与查询字符串一起传递。理论上,这种做法没有错,但这样的URL()通常由浏览器、代理等缓存,因此可能存在其他人使用这些存储的数据访问受保护数据的风险
  • [好方法]为了消除与浏览器、代理等的缓存能力相关的“几乎所有”风险,而且为了使用HTTP协议的标准功能,您必须处理特殊问题
HTTP授权标头:

  • 如果您使用的是HTTPS连接,则可以使用该方法

    授权标头的构造如下所示:

  • 用户名和密码组合成一个字符串“Username:password”
  • 然后使用Base64对生成的字符串文本进行编码
  • 然后将授权方法和空格(即“Basic”)放在编码字符串之前

    例如,如果用户代理使用“Aladdin”作为用户名,“open sesame”作为密码,则标头的格式如下:

    授权:基本qwxhzgrpjbvpcgvuihnlc2ftzq==

  • 如果你使用的是HTTP连接,那么你应该使用这个方法。因为HTTPS连接更复杂,也没用,如果你愿意的话,我会让你读更多的


我强烈反对你的介绍性条款“理论上,这种做法没有错”。将凭据放入URL是完全错误的(即使在理论上也是如此),原因与您声明的完全相同。即使您使用SSL/TLS进行加密,这也只会影响HTTP请求的内容。URL始终以明文形式发送。因此,选项一不仅仅是利用潜在风险,它完全是错误的。