您的位置:首页 > Web前端

web前端安全性 学习笔记

2015-02-11 19:51 232 查看
1.防SQL注入

SQL注入主要是单引号没有过滤,让人利用,重新生成具有威胁性的SQL语句。

例如:http://test.com/view.asp?id=100 如果存在SQL注入,可以写成http://test.com/view.asp?id=100;delete * from table name

(1)在页面开始位置过滤收到的非法字符,如:exec/delete/insert into /update等。这里不是将非法字符串过滤为空字符串,而是过滤为相近的字符。或者如果出现非法字符,跳入错误处理页面。

(2)如果参数为数值型,必须先判断数据类型,以防出现其他错误,往往黑客信息的来源就是页面出错的信息。

(3)如果参数为字符型时,必须要先过滤掉字符串的单引号为双引号或其他字符。

2.防另存为

3.防无限刷新(DDos)



(1)服务器端防御

(2)用js操作cookie来记录访问日志信息,判断访问频率。这种方法不会占用服务器资源。



4.防无限提交数据(DDos)

(1)加入验证码和提交时间限制功能

5.防cookie假冒

(1)密码信息不要存放在cookie中

(2)cookie信息要加密

6.认证模块必须防暴力破解

例如验证码多次连续尝试登录失败锁定账号或者Ip。

7、对于用户的认证要放到服务器端进行。

8、用户产生的数据必须在服务器端进行校验;数据输出到客户端前必须进行HTML编码,防止恶意修改代码

9、敏感数据保护

口令加密储存,口令输入框不允许拷贝,口令要符合要求的长度和复杂度,定期提醒用户修改口令

10、CSRF攻击

跨站请求伪造,CSRF是利用网站对于用户的信任来发起攻击

要完成一次CSRF攻击,受害者必须依次完成两个步骤:

(1)登录受信任的网站A,并在本地生成Cookie;

(2)在不登出A的情况下,访问危险网站B

即使不满足以上条件的一个,也有可能受到攻击,因为:

(1)你不能保证你登录了一个网站之后,不再打开一个tab页面,并访问另外的网站。

(2)你不能保证你关闭浏览器之后,你本地的Cookie会立即过期,你上次的会话会结束。关闭一个浏览器并不能结束一个会话,但大多数的人错误的认为关闭浏览器就等于退出登录/结束会话

例如:银行网站A 以GET方式请求完成银行转账的操作,如:http://www.mybank.com/Transfer.php?toBankid=11&moeny=1000

危险网站B,它里面有危险代码<img src="http://www.mybank.com/Transfer.php?toBankid=11&moeny=1000"。访问危险网站B之前,已经登录了银行网站A,而<img>以GET方式请求第三方网站资源,所以你的浏览器会带上你的银行网站A的Cookie发出GET请求,去获取资源,结果银行服务器收到请求之后认为这是一个转账操作。



CSRF攻击是源于WEB的隐式验证机制,WEB的身份验证机制虽然可以保证一个消息是来源于用户的浏览器,但是无法保证该请求是用户批准发出的。



CSRF防御:

可以从服务器端和客户端进行防御,服务器端防御较好,一般都是在客户端页面增加伪随机数

(1)Cookie Hashing

(2) 验证码

(3)Token

(4)检查refer

11、XSS跨站脚本攻击

防御: 后台过滤和前端预防

无论攻击者使用各种取巧手段绕过后端过滤,但这些Html字符最终要在前端构造成元素,并渲染出来。因此可以在DOM构造之后,渲染之前,对元素进行风险扫描。将可执行元素从缓存中清理出来(script,iframe,object ,frame,embed,applet);或者给风险元素加上sandbox,进行沙箱隔离。

例如 iframe 加上sandbox属性之后,即可只显示框架不显示内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: