【问题标题】:How I do to force the browser to not store the HTML form field data?如何强制浏览器不存储 HTML 表单字段数据?
【发布时间】:2010-10-03 01:49:48
【问题描述】:

在输入 HTML 表单时,Firefox 或 Internet Explorer 等浏览器会存储这些值,有时会悄悄地存储。因此,当输入另一个网络表单时,浏览器会巧妙地建议相同的信息。另一种显示下拉列表的方法是双击一个空文本框。

在电子商务网站上,客户键入信用卡号和其他敏感信息。如何避免或阻止浏览器存储敏感信息?

另一个担心是存储的表单数据被篡改(例如通过恶意软件)。然后客户可以选择这些受污染的数据并破坏站点。

【问题讨论】:

标签: asp.net security xss forms


【解决方案1】:

尝试使用属性autocomplete="off"

它应该适用于单个输入元素:

<input type="text" autocomplete="off" name="text1" />

或整个表格:

<form name="form1" id="form1" method="post" autocomplete="off"
  action="http://www.example.com/action">
[...]
</form>

特别是对于 ASP .NET,您可以这样设置:

WebForms 表单:

<form id="Form1" method="post" runat="server" autocomplete="off">

文本框:

<asp:TextBox Runat="server" ID="Textbox1" autocomplete="off"></asp:TextBox>

或在运行时:

Textbox1.Attributes.Add("autocomplete", "off");

【讨论】:

    【解决方案2】:

    在此处查看更长的讨论:

    How do you disable browser Autocomplete on web form field / input tag?

    看起来 autocomplete="off" 在某些情况下可以使用,但它不符合 XHTML。

    【讨论】:

      【解决方案3】:

      你可以把输入框放在上面:

      autocomplete="off"
      

      作为一个属性。

      话虽如此:不要这样做。

      从可用性的角度来看,这是一个糟糕的想法。特别是如果有字段验证。没有什么比必须重新输入表单的某些部分更烦人的了,因为您必须更正一个完全不相关的表单。大多数用户喜欢他们不必重新输入信用卡号码、姓名、电子邮件地址等这一事实。

      关闭这些功能会惹恼更多的用户。

      归根结底,安全是用户的问题,也是他们的特权。绝大多数人使用个人或工作 PC,因此可以缓存此类信息。正确配置的公共终端会在用户注销时清除表单数据。

      那么你到底在帮助谁?

      【讨论】:

      • 这不应该被否决。但是,关于“安全是用户的特权”这一点,我认为这不一定是正确的态度。您可能正在构建一个业务应用程序,其中要求之一是不允许这些自动完成字段。但有时你可能有道理。
      • 说安全是用户的问题是太过分了,但对于一般要点 +1。我讨厌禁用自动完成和/或使用非标准(阅读“愚蠢”)字段名称(如“EmailAddy”)的表单。
      • 不应让用户停止浏览器存储信用卡号码。太多的用户甚至不会意识到这是一个问题。
      • 卡安全码尤为重要。正如这个页面is.gd/gZVD所说“永远不要存储安全代码......它的价值取决于提供它的唯一方法是从实体信用卡中读取它的假设,证明提供它的人实际上持有卡。 "
      • 不同意 cletus 的观点 - 开发商有责任遵守信用卡行业的规则。我认为惹恼用户的是可接受的 WRT 卡号 + 安全代码,因为它有助于您的 PCI 合规性。用户往往是安全链中最薄弱的一环!
      【解决方案4】:

      正如其他人所说,答案是autocomple="off"

      但我认为值得说明为什么在某些情况下使用它是一个好主意,因为对此的一些答案和duplicate 问题表明最好不要关闭。

      不应让用户停止浏览器存储信用卡号码。太多用户甚至不会意识到这是一个问题。

      在信用卡安全码字段中将其关闭尤为重要。正如this page 所说

      “永远不要存储安全代码......它的价值取决于提供它的唯一方法是从实体信用卡中读取它的假设,证明提供它的人实际上持有卡。”

      问题是,如果它是公共计算机(网吧、图书馆等),那么其他用户很容易窃取您的卡详细信息,甚至在您自己的计算机上,恶意网站也可以steal autocomplete data。

      【讨论】:

      • 大声笑我喜欢这句话——就像我不记得一个 3 位数的数字一样!但不,不要存储它!事实上,从 PCI 的角度来看它是非法的。
      【解决方案5】:

      当您存储用户名、信用卡号等数据时,最好对公共计算机使用 autocomplete="off"。

      所以,如果你建立一个内部网系统,那就可以了。

      【讨论】:

        【解决方案6】:
        <input autocomplete="new-password">
        

        这适用于“关闭”不适用的情况。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-24
          • 1970-01-01
          • 2014-01-28
          • 2010-09-12
          • 1970-01-01
          • 2011-10-11
          相关资源
          最近更新 更多