[21届]web前端开发实习生岗位面试准备----信息安全

一、cookie 和 session 的区别

  1. cookie 数据存放在客户的浏览器上,session 数据放在服务器上
  2. cookie 不是很安全,别人可以分析存放在本地的 cookie 并进行 cookie 欺骗。考虑到安全应当使用 session
  3. session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用 cookie
  4. 单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个cookie
  5. 将登陆信息等重要信息存放为 session
    其他信息如果需要保留,可以放在 cookie 中

二、sql 注入

原理:通过把 SQL命令插入到 Web 表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令

防御:

  1. 永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等
  2. 永远不要使用动态拼装 SQL,可以使用参数化的SQL 或者直接使用存储过程进行数据查询存取
  3. 永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接
  4. 不要把机密信息明文存放,请加密或者 hash 掉密码和敏感的信息

三、XSS(cross-site scripting)

定义:Xss攻击指的是攻击者往 Web 页面里插入恶意 html 标签或者 javascript 代码

比如:攻击者在论坛中放一个看似安全的链接,骗取用户点击后,窃取cookie 中的用户私密信息;或者攻击者在论坛中加一个恶意表单,当用户提交表单的时候,却把信息传送到攻击者的服务器中,而不是用户原本以为的信任站点。

防御:

  1. X首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤; 其次任何内容写到页面之前都必须加以encode, 避免不小心把html tag 弄出来。这一个层面做好,至少可以堵住超过一半的 XSS 攻击
  2. 避免直接在 cookie 中泄露用户隐私,例如 email、密码等等
  3. 通过使 cookie 和系统 ip 绑定来降低 cookie 泄露后的危险。这样攻击者得到的 cookie 没有实际价值,不可能拿来重放
  4. 尽量采用 POST 而非 GET 提交表单

四、GESF 跨站点请求伪造(Cross—Site Request Forgery)

1.过程:

(1)用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A
(2)在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A
(3) 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B
(4)网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A
(5)浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

2. 检测:

检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞

3.防御

(1)验证 HTTP Referer 字段
(2)在请求地址中添加 token 并验证
(3)在 HTTP 头中自定义属性并验证
(4)验证码

你可能感兴趣的:(实习笔面试,前端,信息安全)