HTTP协议又冷又实用的技能大全( 二 )


文章插图
 
9、Cookie
浏览器请求的Cookie中往往会携带敏感信息 。服务器一般会将当前用户的会话ID存在cookie里 , 会话的具体内容存在服务器端 , 会话的内容很敏感 。
浏览器请求时会携带Cookie信息 , 服务器根据Cookie信息中的会话ID找到对应的会话内容 。会话内容里可能存储了用户的权限信息 , 拿到这部分权限信息后就可能随意控制修改用户的数据 。

HTTP协议又冷又实用的技能大全

文章插图
 
因为HTTP协议的不安全性 , 请求数据包很容易被窃听 , Cookie中的会话信息很容易被盗 。解决方案之一就是在会话中记录用户的终端信息和IP地址信息 , 如果这些信息突然发生改变 , 需要强制用户重新认证 。
不过高级的黑客是可以伪造出和用户真实请求一摸一样的数据包的 。最彻底的解决方案还是采用HTTPS协议 。
普通的Cookie信息可以通过JavaScript脚本获取到 。如果黑客通过某种方式在网页中植入不安全的脚本 , 将用户的Cookie拿到然后发送到远程的第三方服务器中 , 那么Cookie中的信息就被泄露了 。
10、Cookie的两个重要属性
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly被标记为Secure的Cookie信息在HTTP请求中不会被传送 , 它只会在HTTPS请求中传送 , 避免数据被泄露 。
被标记为HttpOnly的Cookie信息是无法通过Javascript API获取到的 , 它只会在请求中传送 。这样可以避免黑客通过网页脚本方式窃取Cookie中的敏感信息 。
Cookie(甜点)如此好吃 , 黑客们总想通过Cookie做各种文章 。
HTTP协议又冷又实用的技能大全

文章插图
 
11、CSRF(Cross-Site Request Forgery)
CSRF跨站请求伪造有很多别名 , 比如One-Click Attack(一键攻击) , 比如Session Riding(搭便车攻击)
假设在在一个社区博客网站中 , 删除个人的文章只需要一个URL就可以 , Cookie中的会话权限信息会自动附加到请求上 。
# 123456为文章的IDhttp://example.com/blog/123456/delete那么当别人伪造了一个上面的链接地址诱惑你去点击 , 比如通过站内信件、私聊、博客评论、图片链接或者在别的什么网站上随机制造的一个链接 。你不经意点了一下 , 就丢了你的文章 。所以它被称为一键攻击 。因为这是借用了你当前登陆的会话信息来搞事 , 所以也被称为搭便车攻击 。
如果在一个金融系统中 , 转账要是也可以通过一个简单的URL进行的话 , 那这种危险就非同小可 。
HTTP协议又冷又实用的技能大全

文章插图
 
这就要求修改性的操作务必不得使用简单的GET请求进行处理 。但是即使这种情况下你改成了POST请求 , 黑客依然有办法伪造请求 , 那就是通过iframe 。
黑客在别的什么网站上伪造了一个POST表单 , 诱惑你去submit 。如果只是普通的内嵌进html网页的表单 , 用户提交时会出现跨域问题 。因为当前网站的域名和表单提交的目标域名不一致 。但是如果通过iframe来内嵌表单 , 则可以绕过跨域的问题 , 而用户却完全没有任何觉察 。
为了防范CSRF攻击 , 聪明的网站的POST表单里都会带上CSRF_TOKEN这个隐藏字段 。CSRF_TOKEN是根据用户的会话信息生成的 。当表单提交时 , 会将token和用户的会话信息做比对 。如果匹配就是有效的提交请求 。
HTTP协议又冷又实用的技能大全

文章插图
 
黑客必须拿到CSRF_TOKEN才可以借用用户的会话信息实施CSRF攻击 , 但是CSRF_TOKEN又必须由用户的会话信息才可以生成 。黑客没有用户的会话信息 , 从而无法实施CSRF攻击 。
12、XSS(Cross Site Scripting)
如果黑客可以在你的网页中植入任意Javascript脚本 , 那他就可以随意鱼肉你的账户 。通过Javascript可以获取Cookie的信息 , 可以借用你的会话去调用一些隐秘的API , 而这一些行为都是在偷偷的进行 , 你根本完全不知道 。
<div># 用户内容Start<script>send_to_hacker(document.cookie)</script># 用户内容END</div>这类攻击在一些UGC网站中非常常见 , 常见的博客类网站就是UGC网站 , 用户可以通过编辑内容来生成网页 。


推荐阅读