【问题标题】:Symfony2 best practices for formSymfony2 表单的最佳实践
【发布时间】:2014-06-21 21:42:39
【问题描述】:

我想知道在 Symfony2 中 除了默认的 csrf 隐藏字段之外,您是否会在普通网站的表单中添加其他证券

我假设表单是使用表单生成器制作的,默认情况下不会向用户显示验证码。

我听取了一些建议 http://nedbatchelder.com/text/stopbots.htmlhttps://www.stanford.edu/dept/its/communications/webservices/wiki/index.php/How_to_implement_a_SPAM_control_countermeasure_that_remains_accessible_using_the_Stanford_Web_Application_Toolkit

1) 你会在时间戳/日期时间 + salt 上添加一个值为 base64_decode & base64_encode 的隐藏字段吗?

因此,您可以将发送表单的时间限制在 [ 3 seconds ; 1 天 ] 带有验证约束。

这会惹恼播放机器人和表单填充机器人

2) 您是否会添加一个用 CSS(蜜罐)隐藏的文本字段,以便机器人在提交表单时填写它?然后创建一个验证约束,如果该字段不为空,则表单提交无效(如果需要进一步操作,可能登录您的数据库 ip 和用户代理)。

这会惹恼填表机器人。

3) 随机化字段名称和 ID,以便播放机器人在不重新加载网站页面的情况下无法发送表单。 (虽然我还没有测试随机名称是否会给表单生成器带来问题)

这会惹恼播放机器人。

4) 还有其他想法吗?

【问题讨论】:

  • 由于bot可以模拟浏览器界面交互和鼠标点击,隐藏字段将无用。更改名称/id 也将无用,因为它们可以使用 className 和 index... 看看 Catcha for Symfony
  • 所以方法 2 和 3 没那么有用。我不喜欢用户体验的验证码;我更喜欢在发送表单时记录,然后在过去 y 秒内发送表单超过 x 次时显示验证码。
  • 我同意,验证码很痛苦...如果您随机化 id 和 css 类名并随机化表单位置(以更改索引),则可以选择解决方案 3,但它不会阻止专用机器人您的网站

标签: php forms symfony


【解决方案1】:

我最近使用了 app/config/security.yml 文件中的 access_control。在那里,您可以使用角色(您可以使用默认/匿名角色,或者您可以定义自己的角色)和频道(http 或 https)来限制对您形成的路径的访问

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多