web安全同源策略以及跨站脚本,跨站请求伪造

http是无状态协议 所以服务器为了辨识访问者是否已经访问过 会给浏览器一个cookie

浏览器再次访问时候 将cookie传过去 服务器就可以知道 该访问者已经登陆过 不需要再次登陆

 

 

 

但是早起 服务器是被动 也就是 当浏览器发起请求 才会有回应,如果说对于一些特殊情况,比如需要实时更新的股票信息,不免需要

浏览器每间隔一段时间重复去询问 查询股票是否已经变化

浏览器 股票涨了了吗 服务器 没有

浏览器 股票涨了了吗 服务器 没有

浏览器 股票涨了了吗 服务器 没有

浏览器 股票涨了了吗 服务器 没有

浏览器 股票涨了了吗 服务器 涨了

。。。这个过程叫轮询 效率是很低的

 

 

 

然后现在 websocket可以建立一个长连接 实现服务器与浏览器的实时通信 无需轮训

 

 

 

安全:

服务器通过cookie来辨识用户身份,因此cookie里实际上是存储有用户的加密信息,一但黑客获取到cookie便可以伪造用户身份去登陆,

比如获取到网银的cookie后 就可以去登陆用户的网银 因此是非常危险的

 

 

因此 浏览器有同源策略

除非两个网页的javascipt来自同一个源头 ,否则不允许一个网页的javaScript访问另外一个网页的内容 包括cookie DOM 等等

 

同一个源头指的是 url地址相同 端口号相同

 

 

同时 为了方便 支持 嵌入式的 跨域访问 比如

 

 

如果这个网站不对输入进行校验和过滤转义的话 就会将整行原封不动的存进数据库里,当其他用户来访问的时候 ,点开网页

加载评论的时候 除了看到了 不错的文章 这几个字,script脚本此时也被执行了,这一行的意思是打印出当前用户的cookie

 

这里只是举个例子,这样就完成一个跨站脚本的注入 ,攻击者完全可以将复杂的逻辑封装成一个js文件 比如 xx.js ,然后

将这个js 脚本注入进去

 

用户进去就已经加载了这个js

 

js内部还可以构造 这样的get请求将访问用户的cookie 带到 xx.com这个攻击者的站点去

 

 

 

 

 

现在很多网站为了防范这种情况 给cookie加上了 HttpOnly这个属性 一但加上,浏览器将禁止javascipt去读取cookie

 

 

但是黑客可以通过xss注入 不一定非要拿cookie 它甚至可以用js画一个假的登录框覆盖到真的登陆框之上,让用户去登陆,从而偷盗用户账户密码

 

这个就是 跨站请求伪造 ( Cross site request forgery ) CSRF

 

 

比如说 你在登陆了网银的情况下,此时网银的cookie是存在的

 

此时 有一条显示在垃圾广告中的消息 恭喜你获得了一台iphoneX 点击领取 你一点 发现 自己的网银里的钱 没了

 

这个 消息的实质是 恭喜你获得了一台iphoneX 点击领取

 

标签里的内容是不会显示出来的 所以用户往往不小心就点了,因为访问的这个一个转账的url 因为此时用户正好在网银页面,cookie是存在的,因此网银的服务器就会认为该用户要转账。

 

这就是请求伪造

 

 

然而 完全可以用户不点击就中招 比如 在某个页面里放上

 

恭喜你获得了一台iphoneX 点击领取

 

 

当用户打开页面的时候 ,图片就会自动加载,此时就等于是在访问转账页面了

 

 

 

 

 

你可能感兴趣的:(web安全)