new操作符
1、创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型
2、属性和方法被加入到this 引用的对象中
3、新创建的对象由this所引用,并且最后隐式的返回this
Ajax原理
1、Ajax的原理简单来说是在用户和服务器之间加了一个中间层(AJAX引擎),通过XmiHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。使用户操作与服务器响应异步化。这其中最关键的一步就是从服务器获得请求数据
2、Ajax的过程只涉及Javascript , XMLHttpRequest和DOM。XMLHttpRequest是 ajax的核心机制
解决跨域问题
jsonp、iframe、window.name、window.postMessage、服务器上设置代理页面
XML和JSON的区别
数据体积方面
JSON相对于XML来讲,数据的体积小,传递的速度更快些。
数据交互方面
JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互
数据描述方面
JSON对数据的描述性比XML较差
传输速度方面
JSON的速度要远远快于XML
AMD和Commonjs
1、CommonJS是服务器端模块的规范,Node.js采用了这个规范。
CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。AMD规范则是非同步加载模块,允许指定回调函数
2、AMD推荐的风格通过返回一个对象做为模块对象,CommonJS的风格通过对module.exports 或 exports 的属性赋值来达到暴露模块对象的目的
常见web安全及防护原理
sql注入原理
就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
总的来说有以下几点
永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等
1、永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取
2、永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接
3、不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息
Xss原理及防范
Xss(cross-site scripting)攻击指的是攻击者往Web页面里插入恶意 html标签或者javascript代码。
比如
攻击者在论坛中放一个看似安全的链接,骗取用户点击后,窃取cookie中的用户私密信息;或者攻击者在论坛中加一个恶意表单,当用户提交表单的时候,却把信息传送到攻击者的服务器中,而不是用户原本以为的信任站点
XSS防范方法
首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<"," >”,";","'"等字符做过滤;其次任何内容写到页面之前都必须加以encode,避免不小心把html tag弄出来。这一个层面做好,至少可以堵住超过一半的XSS攻击
XSS与CSRF的区别
1、XSS是获取信息,不需要提前知道其他用户页面的代码和数据包。CSRF是代替用户完成指定的动作,需要知道其他用户页面的代码和数据包。要完成一次CSRF攻击,受害者必须依次完成两个步骤
2、登录受信任网站A,并在本地生成Cookie
3、在不登出A的情况下,访问危险网站B
CSRF的防御
服务端的CSRF 方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数
通过验证码的方法
设计模式
工厂模式
1、工厂模式解决了重复实例化的问题,但还有一个问题,那就是识别问题,因为根本无法
2、主要好处就是可以消除对象间的耦合,通过使用工程方法而不是new关键字
构造函数模式
1、使用构造函数的方法,即解决了重复实例化的问题,又解决了对象识别的问题,该模式与工厂模式的不同之处在于
2、直接将属性和方法赋值给this对象;