谈 target="_blank" 的安全问题
target=”_blank” 的安全问题
当我们在网站中引入外部链接的时候往往使用的是
1 | <a href="" target="_blank"></a> |
大家都喜欢target="_blank"
, 因为新页面打开不影响原来的页面
但是这个存在安全问题, 由target="_blank"
打开的页面, 可以通过window.opener
访问原来的窗口
例如:
1 | window.opener.location = "http://..." |
遍可以简单的将网页导航到其他网站, 这就存在很多的安全隐患了, 比如钓鱼
这种问题解决起来也很简单, 在链接中加入rel="noreferrer noopener"
属性就可以了
1 | <a href="" target="_blank" rel="noreferrer noopener"></a> |
CSDN 中的 target=”_blank”
我查看了几个可以发布文章的平台, 例如掘金、思否、知乎 还有CSDN, 果不其然CSDN是唯一有这个问题的
CSDN总是慢一拍, 一个技术网站却总是显得那么不专业, 就像当初的数据库明文存储密码
CSDN 漏洞的利用
钓鱼
这是最先想到的, 如果有人仿做一个登录页面, 然后发布一片文章, 插入一条带有漏洞的链接, 当读者查看完, 返回时, 看到一个登录页面
读者可能会奇怪, 但是我相信还是会有很多人会中这个陷阱
输入密码后, 登录的钓鱼网站只需返回原来的页面即可, 因为Cookie
的存在就好像真的登录了一样, 此时密码已经不知不觉泄露了
骚操作 自动关注
这里不得不再吐槽一下CSDN, 关注用户的api
不仅简单, 而且是get post
请求均可的, 这就给了我们很大的操作空间了
我们只需利用window.opener.location
导航到关注api
, 再返回回去即可, 读者在不知不觉中就进行了关注
一小段代码的例子
1 | window.opener.location = "https://my.csdn.net/index.php/follow/do_follow?..." |