
1 ryd994 2017 年 2 月 14 日 via Android 1.session 只有 id 在 cookie 里。确实能通过偷 cookie 的方式偷 session ,但是客户端永远看不见 session 的具体内容。而 cookiesession 是可以看见的。一般会签名,避免客户端篡改。也有加密的。但是 session 内容毕竟是存在客户端,不符合安全原则。 2. cookie session 大小有限制,而且会产生很多不必要的流量。因为浏览器每个请求都会发送所有 cookie 。 |
3 weyou 2017 年 2 月 14 日 via Android django 的 session id 就是一个随机 id 。防止 csrf 攻击的是另外一个叫做 csrf_token (具体什么名字有点忘了)的自定义 http header 来保证的。 |
4 murmur 2017 年 2 月 14 日 问的好 所以有两种方法 ( 1 ) https ,这要都被偷听了要检讨你网络得多烂了 ( 2 )类似 oauth ,用户会用一个私钥 hash 所有的参数,他可以拿到 cookies 但是拿不到用户的私钥,自然也不能每次都计算出 hash |
5 z4none 2017 年 2 月 14 日 要保证安全性, 1 是避免 cookie 被截取,设置 cookie 的 secure flag ,使其只在 HTTPS 连接中传输 2 敏感操作再次验证用户帐号密码 |
6 eric6356 2017 年 2 月 14 日 不知道你说的 cookie 被截取具指什么。 因为 Django的 session cookie 默认是 HTTPOnly 的,所以普通的 XSS 偷 cookie 很难奏效。 https://docs.djangoproject.com/en/1.10/ref/settings/#session-cookie-httponly |
7 sujin190 2017 年 2 月 14 日 确实存在获得 sessionid 就能拥有登陆状态这个问题,会话劫持,但 session 里边的内容是不可能知道的,防止劫持也可以有很多方案,比如浏览器的跨域,比如 HTTPOnly 可以防止浏览器本地被修改,比如 https 可以防止传输过程中窃取,比如没过一段时间刷新成新的 id 等等 |
9 ansheng 2017 年 2 月 15 日 1. 你确实可以通过拿到 cookieid 来获取到 sessionid 2. 就算你拿到了, session 数据存储到服务端,而且大部分都是内网的,你怎么去获取吗? |
10 AyoCross OP @ansheng 我的理解:并不是为了获取 session 里的数据,而且通过伪造身份来提高权限,比如未登录的用户伪造登录或者伪造管理员权限。来对网站做出一些损害 |