密码管理:不安全提交

概括

表单上提交密码作为HTTP GET请求的一部分,这将导致密码被显示,记录和存储在浏览器缓存中。作为HTTP GET请求的一部分提交密码将导致显示,记录或存储在缓存中的密码。

解释

按照惯例,与HTTP GET请求关联的参数不会被视为敏感数据,因此Web服务器会对其进行记录,代理对其进行缓存,并且Web浏览器不会努力隐藏它们。作为HTTP GET的一部分发送密码或其他敏感数据可能会导致数据处理不当并有可能泄露给攻击者。

示例1:在下面的示例中,新用户密码是通过HTTP GET请求提交的。

 

 另外,请注意,该方法的默认值是GET,因此省略该属性将得到相同的结果。

推荐

避免通过HTTP GET请求发送敏感数据,例如密码。敏感数据应使用HTTP POST(而不是HTTP GET)从浏览器传输到服务器。

示例2:在以下示例中,新用户密码是通过HTTP POST请求提交的。

 

 HTML5增加了将formmethod属性指定为Submit和image输入标签的一部分的功能,并且该属性的值覆盖了相应form标签的method属性的值。

示例3:在下面的示例中,新用户密码也通过HTTP POST请求提交,该请求由Submit输入标签的formmethod属性指定。

 

 但是,请注意,如果将formmethod属性的值设置为get,则无论相应的form标记的method属性指定了什么,都会通过HTTP GET请求提交表单。 避免通过HTTP重定向发送敏感数据,因为它会导致用户的Web浏览器发出HTTP GET请求。应用程序应该将敏感数据存储在会话对象中,从而无需将其传输回浏览器,或者只是丢弃数据并要求用户再次输入。其他选项(例如将敏感数据嵌入自动发布其数据的网页中)也存在问题,因为该网页可能由代理或Web浏览器缓存。通常情况下,在这种情况下,安全性可能需要超越可用性。

posted @ 2021-03-11 11:35  靳公子、  阅读(213)  评论(0)    收藏  举报