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属性之后,即可只显示框架不显示内容。
web前端安全性 学习笔记
最新推荐文章于 2024-08-20 10:15:00 发布