【问题标题】:Adding email address as an hidden field将电子邮件地址添加为隐藏字段
【发布时间】:2010-04-14 21:12:17
【问题描述】:

我最近发现了一个网站,其中电子邮件地址包含在 html 表单的隐藏标签中。这是一种不好的做法吗?除了窃取邮件地址之外,为什么?

【问题讨论】:

  • 你说的是网站的联系邮箱吗?
  • 是要求用户填写的表格,还是隐藏了整个表格?能发个链接吗?
  • 类似于
    ,这是一个联系表格

标签: html xhtml


【解决方案1】:

这是一种不好的做法。

恶意用户可以使用Firebug 之类的工具来更改隐藏字段的内容。
然后,他可以使用您的表单发送垃圾邮件或发送匿名电子邮件,例如。

【讨论】:

  • 另外,垃圾邮件机器人可以从页面源中获取电子邮件地址。
【解决方案2】:

这是使用会话存储电子邮件值用于特定目的的替代方法。

【讨论】:

    【解决方案3】:

    假设,一个名为“to”的字段包含正在联系的组织的电子邮件地址。由于这不会因客户而异,因此不应成为表格的一部分;它应该是表单目标脚本的一部分。

    即使“收件人”电子邮件有些可变(例如网站管理员、技术服务、销售、投诉部门等的有限列表),表单也不应包含目标电子邮件。它应该包含一个下拉发送到列表,其中选项值是整数,脚本使用这些整数来确定哪个电子邮件地址是合适的。除了安全问题之外,像上面描述的那样的选项列表很容易从数组中生成。因此,对您的电子邮件列表进行更改很容易。

    将电子邮件地址保留在联系表单之外有助于防止盗用您的表单发送垃圾邮件。它还可以使您的电子邮件地址不被网络抓取工具保护。

    【讨论】:

    • +1,虽然不一定是 int 列表 - 使用字符串列表更容易阅读,例如:“admin”; “销售代表”;等
    • @sr pt:我的意思是这样的:<option value='1'>webmaster</option>。不会牺牲可读性,并且验证整数比验证字符串更容易且更便宜。
    • 请原谅不清楚,我的意思是<option value="wm">webmaster</option> - 这样当人们阅读(或编写)处理所选值的代码时,可以轻松记住(或推断)该值的含义.
    • @sr pt:我明白你的意思。我通常将我的电子邮件地址列表保存在一个数组中(静态或从数据库填充),因此整数 id 是数组索引或 PK(或两者)。如果我使用的是静态数组,则发送的电子邮件除了地址是相同的。如果我使用的是数据库,那么电子邮件处理的差异将根据电子邮件记录的其他字段的值进行编码。无论哪种方式,我都不需要知道值的含义。我只需要知道它是有效的。
    【解决方案4】:

    这只是一种跟踪必须在某处需要的电子邮件地址的方法。既然他们自己查不出来你的email地址,我想你之前已经在系统中输入过,所以我不会称之为窃取。

    至于实践,我不是隐藏字段的忠实粉丝,因为它们很容易更改,但如果需要,它可以完成工作。当然,您需要在后端进行各种数据验证,将隐藏字段视为用户输入。

    【讨论】:

    • 如果要验证其内容,隐藏字段存储常量值的实际用途是什么?
    • @sr pt:可能不是恒定的,可能来自上一步/页面。
    【解决方案5】:

    什么邮箱地址在哪里?

    表单将被提交到的电子邮件地址?它不是很干净,但没有什么可怕的。 (如果服务器端表单处理程序没有根据白名单检查电子邮件地址,那么这就是垃圾邮件中继的邀请,这可怕的)。

    用户在上一页输入的电子邮件地址?没问题,这只是维护状态,它不能被窃取 - 只有首先进入它的用户才能看到它。(这一半的答案已删除响应 cmets)

    【讨论】:

    • 邮件地址在非用户输入的隐藏字段中是静态的
    猜你喜欢
    • 2017-03-28
    • 2018-10-21
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2017-05-10
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多