【问题标题】:Prevent Form spam with the session通过会话防止表单垃圾邮件
【发布时间】:2009-05-06 01:18:39
【问题描述】:

我已经阅读了大部分关于防止垃圾邮件技术的问题,但似乎没有一个建议使用浏览器的会话。

我们有一个向给定电子邮件地址发送电子邮件的表单,但我们不喜欢使用“验证码”或 Javascript 的想法,因为我们希望让没有 Javascript 的用户可以轻松访问用户旅程。

我们希望使用会话对象来帮助防止表单垃圾邮件。我们的 webapp 是在 Weblogic Server 10 上使用 Struts 开发的。

解决方案是,当表单加载时,它会在会话对象中设置一个变量。单击提交后,我们会检查变量的会话。没有变量,重定向到表单。变量存在发送邮件。

如果有任何意见/理由说明这可能是一个坏主意,我将不胜感激,因此我们可以针对其他人评估此解决方案。

非常感谢, 乔纳森

【问题讨论】:

    标签: java session struts spam-prevention


    【解决方案1】:

    没有什么可以阻止垃圾邮件发送者自动下载您的表单(从而生成 cookie)并提交它。它可能会给垃圾邮件发送者带来轻微的负担,但微不足道。

    例如,可以使用命令行工具(例如 cURL)轻松下载和提交表单,并保留 cookie。然后可以从脚本重复运行。

    【讨论】:

      【解决方案2】:

      根据实现的不同,会话对象在资源使用方面可能相对较重,而且速度有些慢。此外,垃圾邮件发送者,如果他们意识到您是如何阻止他们的,他们可以在每次点击表单时简单地启动一个新会话,而不发回会话 cookie。

      因此,由于该技术依赖于客户端的良好行为,并且预期的行为相当容易防止,因此它可能不如其他一些解决问题的方法有用。

      【讨论】:

        【解决方案3】:

        感谢您对 cdeszaq 的回复,但我不确定您是否误解了我的问题。

        为了成功完成表单提交,客户端将被强制加载表单以正确设置会话对象。只有当会话处于正确状态时,才能发送电子邮件。

        如果垃圾邮件发送者没有发回会话 cookie,那么他们将无法向我的表单发送垃圾邮件,因为他们没有进入创建正确会话的表单页面。

        我同意使用会话对象会创建额外的资源。我们的实现将简单地(使用 JSP)调用 session.setAttribute("formLoaded", true);,在我的 Struts 操作中,我将简单地使用 session.getAttribute("formLoaded"); 进行检查。

        【讨论】:

        • 对,所以可以使用相同的系统和 2 个页面加载设置来发送垃圾邮件...点击表单获取会话,然后发送垃圾邮件。重复此操作,您就可以轻松地围绕此方法发送垃圾邮件。
        【解决方案4】:

        我想知道这是否可行:

        1. 每次渲染页面/表单时,随机创建一段文本
        2. 将该文本放入会话中
        3. 将该文本作为隐藏字段包含在表单中
        4. 用户提交表单
        5. 操作将隐藏文本与会话中的值进行比较 - 如果匹配,则发送电子邮件

        由于黑客无法在会话中添加任何随机值,因此他们无法发送垃圾邮件。对吧?

        【讨论】:

        • 他们可以只提交表单,随意填写垃圾邮件,并包含所有隐藏字段值。
        • 我认为最初的问题是这样的:垃圾邮件程序可能会在不使用表单的情况下提交操作。在我的情况下,这是不可能的;表单必须首先显示,并且正确的随机字符串放置在随后的提交到动作中。如果从表单页面上刮掉随机字符串,您提到的“2 页加载”方法将绕过这一点。但也许,就像“橙色”验证码方法一样,对于最初的提问者来说,这已经足够了。
        • 如果问题是在不使用表单的情况下提交,那么原始发帖人的解决方案(依赖会话 cookie)会起作用,就像您的一样。我不知道表单垃圾邮件软件(我假设有这样的事情)首先加载表单有多普遍,但鉴于实现起来很简单,我会假设一个依赖于不加载的解决方案首先表格不会非常有用。 (“橙色”验证码有效,因为垃圾邮件发送者必须将软件定位到特定站点。在这种情况下,这不是必需的。)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-20
        • 1970-01-01
        • 2011-10-08
        • 1970-01-01
        • 2016-07-11
        • 2015-06-05
        相关资源
        最近更新 更多