面试(一)

公司:xxx

职位:web前端工程师

看到面试职位,就有点奇怪,本来我投递的是PHP sever工程师的。

去面试了,果然悻然二回,下面记录下面试的过程。

面试的是个小年轻,估计也就90后,一下让我有直接走的冲动。

1、自我项目介绍。

2、mysql表设计:

      产品表,用户表,设计两表关系

      博客多级评论,如何查到某评论下的所有评论?

第一个问题,直接设计关系表,没什么可说的。

第二个问题,评论表里,我设计了层级字段,父级ID字段。但是要查出 某评论下的所有评论,还是需要多次查询,没有真正解决问题。

3、session如何存储

      这个问题一下有点蒙,竟然说是存储在环境变量中。

      其实我们平时的项目是用memcache存储的,竟然当时没想起来。

      其他存储方式还有 数据库存储和共享存储。

4、CSRF攻击,如何防止

      当时只想到了随机串

    攻击方式:受害者打开网站A,登陆网站A,网站A保存一些cookies在本地(没有关闭浏览器),受害者又打开网站B,网站B保存一些恶意cookies,并向网站A发送受害者的请求(网站B利用受害者攻击网站A)。

                 受害者打开网站B,网站B诱使受害者进行网站A的操作。(假官网盗取用户资料)

   解决方案:验证 HTTP Referer 字段,给用户分配token。

  服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数


XSS攻击------相对复杂的安全性问题

  攻击方式:基于DOM的XSS即通过浏览器来直接运行js脚本无须提交服务器,从客户端的代码引起的。

                如:其实就是发送一个合法的地址加自己的脚本,比如:www.xxx.com/search?wd=<script>...</script>

                      受害者点击的是www.xxx.com/search?wd=<script>...</script>链接,然后受害者的浏览网页就加入这个恶意代码。

                存储XSS攻击即通过输入框提交js脚本或者上传文件到服务器,从网站的数据库引起的攻击。

                反射XSS攻击即通过url提交js脚本到服务器,从受害人的请求发起引起的攻击。

  解决方案:后端输出页面的时候需要进行转换html实体。

                如:<script> 转义成 &lt;script&gt;

                过滤用户输入。


DoS攻击------常见的具有破坏性的安全性问题(如果是分布式攻击的话就是DDos攻击)

   攻击方式:Ping Flood攻击即利用ping命令不停的发送的数据包到服务器。

                 SYN Flood攻击即利用tcp协议原理,伪造受害者的ip地址,一直保持与服务器的连接,导致受害者连接服务器的时候拒绝服务。

                

   解决方案:设置路由器与交换机的安全配置,即设置防火墙。(涉及到硬件问题我就不多说了,只是提醒一下)


5、跨域问题如何解决

     只想到了jsonp方式,我也只知道这种方式。

JSONP包含两部分:回调函数和数据。

回调函数是当响应到来时要放在当前页面被调用的函数。

数据就是传入回调函数中的json数据,也就是回调函数的参数了。

复制代码
function handleResponse(response){
    console.log('The responsed data is: '+response.data);
}
var script = document.createElement('script');
script.src = 'http://www.baidu.com/json/?callback=handleResponse';
document.body.insertBefore(script, document.body.firstChild);
/*handleResonse({"data": "zhe"})*/
//原理如下:
//当我们通过script标签请求时
//后台就会根据相应的参数(json,handleResponse)
//来生成相应的json数据(handleResponse({"data": "zhe"}))
//最后这个返回的json数据(代码)就会被放在当前js文件中被执行
//至此跨域通信完成
其他方式:

 postMessage(HTML5中的XMLHttpRequest Level 2中的API)

         

 location.hash + iframe

document.domain + iframe

window.name + iframe

基本归结为三类方法:jsonp,iframe,html5的postMessage

6、项目中遇到的难点:

      介绍了券到期提醒方案

7、多进程读文件

      我说用redis的setnx,估计他是想让我回答php自带的flock

8、url白名单如何过滤,具体不知道到他什么意思

9、isset和empty的区别,估计他也没什么耐心了,随便问问了。

总体来说,问题便前端,跟我不太对路。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值