绿盟面试总结

首先说了一下自己的项目,所以要对自己的项目进行深入的了解。

一、在登录界面要考虑的安全问题。

传输:使用https进行传输,对传输内容进行加密,杜绝http明文传输

密码:

  1. 强制用户使用有一定强度并复杂的密码,一定包含英文字母和数字,防止出现123456这样的弱口令    
  2. 密码不要明文存储在数据库,要进行加密处理,同时可以加盐 
  3. 用户名和密码不要单方面提示,不管是用户名还是密码错误都提示“用户名或密码错误”,防止攻击者进行尝试

sql防护:前端进行禁止用户输入导致sql注入的字符,后端也要进行sql注入的防护

异地登录:保存每次用户登录信息日志,当出现异地登录时,进行提醒

cookie防护:不要在cookie中保存账号密码,要将过期时间,ip等考虑进去,cookie要设置成http only,防止脚本获取

设置会话有效期:比如登录后10分钟不操作进登录失效。

加验证码:防止黑客进行撞库攻击

采用单点登录。

二、如何确定用户是否登录。

  1. 当用户输入正确的用户名和密码时,在服务器端创建一个session保存,并设置过期时间
  2. 如果用户选择保存密码,将cookie保存在浏览器端
  3. 每次用户向后台进行请求时,进行状态验证,如果存在session,则继续进行操作,并刷新session的有效时间,如果不存在session,则判断cookie是否正确,如果正确则,完成自动登录,否则返回登录界面。

三、session和cookie的区别是什么?

  1. cookie存放在浏览器端,session存放在服务器端
  2. cookie不是很安全,别人可以分析存放在本地的cookie进行cookie欺骗,考虑到安全性,账号密码等信息应该保存在session端。
  3. session会在一定时间内保存在服务器端,当访问增多时,会影响服务器的性能。
  4. 单个cookie保存的数据不能超过4k

四、文件上传和下载有什么了解?

文件上传

  1. 采用apache的开源工具common-fileupload这个文件上传组件
  2. 在文件上传页面添加type为file的input控件,通过表单form进行提交
  3. 得到文件保存目录,如果不存在,就创建,同时生成文件上传是的临时目录
  4. 使用apache文件上传组件处理文件上传流程。
  5. 创建一个文件上传工厂,设置缓冲区大小,如果超过缓冲区大小,就会生成一个临时文件放在临时目录
  6. 创建文件上传解析器,监听文件上传的进度
  7. 解决文件上传的中文乱码问题,对单个文件的大小设置最大值
  8. 获取文件名,并判断文件的类型是否合法
  9. 获取保存文件目录,创建一个缓冲流,获取文件输入流
  10. 创建文件输出流,循环将输入流数据读入缓冲区,将缓冲区的数据写入目录
  11. 关闭输入流,关闭输出流,删除临时文件

       1、为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,比如放于WEB-INF目录下。

  2、为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名。

  3、为防止一个目录下面出现太多文件,要使用hash算法打散存储。

  4、要限制上传文件的最大值。

  5、要限制上传文件的类型,在收到上传文件名时,判断后缀名是否合法。

文件下载

  1. 得到要下载的文件名
  2. 通过文件名得到文件的目录
  3. 得到要下载的文件,如果文件不存在,则返回“您要下载的资源已被删除”
  4. 处理文件名,设置响应头,控制浏览器下载文件
  5. 读取要下载的文件,保存在输入流
  6. 创建输出流,创建缓冲区,循环将输入流内容读取到缓冲区,输出缓冲区的内容到浏览器
  7. 关闭文件输入流,关闭输出流。

五、xss和csrf的区别。

xss:跨站脚本攻击,反射型,存储型,dom型(改变了html的dom树)。

csrf:跨站伪造攻击,xss是实现csrf攻击的其中一条,当用户打开一个页面时,他可能打开另一个页面,这时候浏览器保存的数据就会被使用,服务器端不能知道这是不是用户自己发起的操作

可以使用referce保证请求来自哪个页面。

 

你可能感兴趣的:(面试经验)