2012-07-07 69 views
6

我目前正在研究蜜罐解决方案,以防止我的网站中发现垃圾邮件,其中包括通过在HTML元素中添加style="display : none;"来添加带有随机名称的几个字段并将它们隐藏在CSS中。提交时,如果这些字段中的任何一个不是空的 - 就像它应该 - 意味着一个spambot刚刚提交了表单。那还是一个恶意用户。无论哪种方式,该职位都被拒绝。使用可访问性支持CSS或JavaScript的浏览器?

现在,这将工作完美,但我假设所有用户都有浏览器支持CSS。

通过JavaScript删除每个字段的CSS display属性等于none可能会阻止没有CSS支持的浏览器显示所谓的隐藏字段。

所以,这将很好地工作为支持的浏览器:

  • CSS和JavaScript的
  • 只有CSS
  • 只有JavaScript

我的问题是,那么,对于做浏览器盲人或任何其他以辅助功能为目标的浏览器支持CSS和JavaScript,仅限CSS,仅JavaScript或

回答

4

做浏览器盲人或任何其他辅助定位的浏览器

有没有浏览器,这些天来朝残疾人士为目标。过去曾经有过几个项目,但主要的辅助技术(AT)制造商一起采取行动,先让他们的软件在IE上运行,然后在Firefox上运行。您有机会使用Chrome或Opera与AT,支持被击中或未命中。

支持CSS和JavaScript,只有CSS,只有JavaScript或没有?

这真的归结为使用JS,CSS和AT组合。一般来说AT对CSS没有问题。有四个方面可能会导致问题:颜色/对比,display:table,display: nonevisibility:hidden。由于前两个不是问题的一部分,我们将跳过它们。 JAWS仅在<span>上宣布有display:nonevisibility:hidden的内容。我不会评论JS的评论,但WebAIM有一篇文章提供an overview of JS and accessibility

包括添加一些带有随机名称的字段,并通过在HTML元素中添加style="display : none;"来隐藏CSS。

我假设您正确地将<label> s添加到您的所有表单元素。请将它们添加到蜜罐中以防万一它们被读取。我还会在<label>中加上“忽略此字段”。

阅读:

Screen Readers and display: none

JAWS, Window-Eyes and display:none: Return to 2007

+0

感谢您的回答! (并且每个人也都是)。我不认为我会遵循的唯一建议是添加“忽略此字段”标签,因为它会使spambot非常容易识别它。 – federicot 2012-07-10 11:50:18

+0

鉴于 - 根据文章 - 显示:几乎所有情况下都不起作用,并且JS也起作用,用户很可能甚至不会看到该字段,因此我猜测缺少的标签不会成为可访问性问题 – federicot 2012-07-10 11:59:52

+0

我不是一个垃圾邮件机器人专家,但我不认为他们特别在'label'标签中解释措辞。机器人可能只是刮了一页寻找“输入”,并试图推倒垃圾。所以忽略这将是AT。如果您有一篇文章显示僵尸工具知道用“忽略”,“跳过”等字样跳过输入,请分享。 – 2012-07-10 16:58:19

2

现代屏幕阅读器通常通过将文本到语音界面“挂钩”到普通网络浏览器(例如Internet Explorer)上工作。因此,它们支持浏览器通常支持的所有CSS和Javascript。 display:none是完美的犹太教。

就其他浏览器而言:自从Netscape 4.something以来,基本的CSS规则(如display: none)已得到每个主要Web浏览器的支持。如果有人使用不支持CSS的浏览器,他们将面临比您的注册表更大的问题。

+0

正常的网络浏览器和Internet Explorer在同一句话?! – 2012-07-08 00:14:22

+0

公平点!我的意思是“正常”,因为它是一个主流的浏览器,而不是一些特殊用途的渲染引擎。 – duskwuff 2012-07-08 00:19:15

1

如果你这样做是因为恶意用户是无用的方式 - 我的意见。我不是那些坏家伙,但它需要一次点击才能禁用CSS样式。轻松插入现代浏览器。适合web开发,也可能适用于其他方面。它就像重新发明轮子,以固定形式随机隐藏输入名称一起工作。捕获1个工作组合(阅读源代码F4),您可以多次使用它。

为什么不简单地额外命名可见输入并将其名称存储在会话中并在提交后进行比较?

或者将其中一个<input type="hidden"添加额外的代码(散列或其他任何内容)只能由您的应用程序识别的内容。

+0

大多数垃圾邮件非常愚蠢,无法使用这些技巧,因为他们的愚蠢方法在其他任何地方都可以工作,而且它不起作用的网站也是活跃网站管理员删除并对抗垃圾邮件的网站,因此无需坚持。除非您是Google,Hotmail,银行或任何能够破解反垃圾邮件而获得巨额回报的网站。然后将作出巨大的努力。 – FelipeAls 2012-07-11 03:40:53

2

那么我有时会对世界感到失望,并且它不支持CSS,所以我使用Lynx。我在这样的情况下做的是写入隐藏字段的默认值,如:Please DON'T fill anything into this field

这照顾任何人看不到,但愚蠢的机器人仍然覆盖它。然后我检查我的代码是否与完全不同Please DON'T fill anything into this field和利润!

顺便说一句 这个隐藏字段方法不会反正阻止攻击者,所以这是一个有争议的问题,讨论会发生什么,如果一个攻击者签出页面的源代码。我们只是想让大众机器人停下来 - 而那些能够识别这样的文字的机器人(每个开发人员用他们自己的话来传达信息)远远不会落入脚本小子手中,即使它们确实存在。那么最后一部分是猜测。

0

添加到别人的答案,我会说,像显示性能的JAWS甚至支持动态变化的辅助软件(比如说,显示/隐藏按一个按钮)。