假设我们有一些测试POST请求的自动化。由于Rails内置CSRF保护而没有包含CSRF令牌,因此这些POST请求将无法工作。
在这种情况下运行自动化的最佳做法是什么?
我们是否需要在每个自定义非GET请求中包含CSRF令牌? (如果'是'那么'怎么样?')
或者,最好配置应用程序以禁用自动化内容的CSRF保护?
答案 0 :(得分:1)
我不确定是什么让你首先提出这个问题,但我很乐意回答:)
简短的回答是,它取决于您将用于自动化测试的工具。如果您要使用答案标签中的工具 - 带有watir的黄瓜 - 那么一切都按预期工作,因为这些工具会直接自动化浏览器。
这意味着测试的行为与现实生活中的用户类似 - 如果CSRF令牌检查适用于现实生活中的用户,那么它也可以在您的自动化测试中使用。您不会使用这些测试手动发出任何POST请求(至少您不应该这样做),但是您将在网页上填写表单并提交该表单 - 这意味着Rails生成的CSRF令牌也将被提交一切都会很好,花花公子。
但是,如果出于某种奇怪的原因需要手动制作POST请求,则必须禁用test
环境的CSRF检查。