容易忽视的前端陷阱

简介: 1 CSRF CSRF(Cross Site Request Forgery)是伪造客户端请求的一种攻击,字面上的意思是跨站点伪造请求 CSRF的定义是强迫受害者的浏览器向一个易受攻击的Web应用程序发送请求,最后达到攻击者所需要的操作行为。

1 CSRF

CSRF(Cross Site Request Forgery)是伪造客户端请求的一种攻击,字面上的意思是跨站点伪造请求

CSRF的定义是强迫受害者的浏览器向一个易受攻击的Web应用程序发送请求,最后达到攻击者所需要的操作行为。CSRF漏洞的攻击一般分为站内和站外两种类型

现在的Web应用程序几乎都是使用Cookie来识别用户身份以及保存会话状态,但是所有的浏览器在最初加入Cookie功能时并没有考虑安全因素,从WEB页面产生的文件请求都会带上COOKIE,如下图所示,Web页面中的一个正常的图片所产生的请求也会带上COOKIE

预防CSRF:

  1. 在请求中使用 Security token
  2. 正确使用 GET、POST 和 Cookie
  3. 使用 Referer 判断请求来源

2 Jquery绑定和解除绑定

jquery中的如果使用绑定和解除绑定操作,应该是bind和unbind方法同时使用。比如使用onclick绑定的事件,再用unbind解除绑定,是没有效果的。

3  数据移除元素

由于JavaScript的数组其实就是对象,所以delete运算符可以用来从数组中移除元素。不幸的是,这样会在数组中留下一个空洞。这是因为排在被删除元素之后的元素保留着它们最初的属性。JavaScript的数组有一个splice方法,可以删除一些元素并将它们替换为其他的元素。

numbers = ['zero', 'one', 'two', 'shi', 'go'];

delete numbers[2];
// 现在numbers为['zero', 'one', undefined, 'shi', 'go']

numbers.splice(2, 1);
// 现在numbers为['zero', 'one', 'shi', 'go']

 

参考 

http://www.gracecode.com/posts/2821.html

http://www.80sec.com/csrf-securit.html

http://wenku.baidu.com/view/3a0762f90242a8956bece42e.html

目录
相关文章
|
1月前
|
设计模式 算法 程序员
程序员为何需要反复修改Bug?探寻代码编写中的挑战与现实
作为开发者,我们在日常开发过程中,往往会遇到反复修改bug的情况,而且不能一次性把代码写的完美无瑕,其实开发项目是一项复杂而富有挑战性的任务,即使经验丰富的程序员也难以在一次性编写完美无瑕地完成代码,我个人觉得一次性写好代码是不可能完成的事情。虽然在设计之初已经尽力思考全面,并在实际操作中力求精确,但程序员仍然需要花费大量时间和精力来调试和修复Bug。那么本文就来分享程序员需要反复修改Bug的原因,以及在开发中所面临的复杂性与挑战。
88 1
程序员为何需要反复修改Bug?探寻代码编写中的挑战与现实
|
12天前
|
存储 人工智能 安全
数字化转型的10大陷阱及如何避免
数字化转型的10大陷阱及如何避免
|
1月前
|
设计模式 IDE Java
谈谈过度设计:因噎废食的陷阱
本文探讨了设计模式在软件开发中的应用和争议,指出设计模式虽有助于应对软件复杂性,但在互联网快速迭代的背景下,可能会导致过度设计,增加理解和修改成本。文章分析了设计模式的缺陷,如开闭原则可能导致不易修改,最小知识原则可能导致理解困难。同时,文章强调了设计模式的重要性,指出它们可以提高代码的可理解性和模块的可维护性,并提出了通过函数式设计模式进行优化的示例。作者认为,设计模式需要随着业务演进而不断演进,同时提倡使用可调试的模块和模式演进来促进系统的成长性。文章最后提醒读者,要根据实际情况选择是否使用设计模式,避免因噎废食。
159 9
|
7月前
|
移动开发 运维 开发者
探索开发过程中的技术陷阱:掉入新技术的“巨坑”
在快速发展的技术领域,开发人员经常面临着学习和采用新技术的挑战,尤其是随着卓越工程的逐步推进,越来越多的底层技术升级迭代被正式投入使用。而这些新技术和新特性带来了非常多的好处和便利,但是当作为开发者的我们去追求这种改变、开心的使用这些新技术的时候,可能会无意识地掉入一些陷阱或者“巨坑”。开发者在自己开发经历中肯定会遇到因为没有深入了解新技术的实现原理而开心地误入陷阱,成为新技术的“小白鼠”,那么本文就来简单唠唠开发中的技术“巨坑”,以及爬坑过程经验分享。
46 0
探索开发过程中的技术陷阱:掉入新技术的“巨坑”
combineLatest 使用的一个陷阱和基于 debounceTime 的解决方案
combineLatest 使用的一个陷阱和基于 debounceTime 的解决方案
“写代码的时候,不能对自己「妥协」” | 技术人金句系列
“写代码的时候,不能对自己「妥协」” | 技术人金句系列
|
编译器 C语言
源于《C陷阱与缺陷》----研究程序死循环问题
所以最后答案应该就是打印了12次xiao tao,然后越界访问出现错误,使arr[10]=0,arr[11]=0了 但最后答案却不是这样。
94 0
|
Java C语言
看似无害的代码如何搞垮系统
编程就像魔法。最近遇到一个诡异的问题:添加一段看似无害的简单代码后,系统原有功能不可用了。 ## 复现演示 jdk 8 可使用如下演示代码复现这个问题。 `TaskCenter` 是一个任务框架,可添加多个任务,随后框架将执行这些任务。 `First` 任务是新增代码,看起来简单无害,且看不出对原有任务 `Count` 有何影响,但添加 `First` 任务后,其自身执行正常,原本正常的 `C
105 0
|
测试技术 数据库