前端常见面试题(2)

CSRF攻击

CRSF是(cross-site request forgery),中文名称叫跨站请求伪造,缩写为crsf/xrsf.
CRSF可以做什么
攻击者盗用了你的身份,以你的名义发送的恶意请求。包括以你的名义发邮件,使用你的名义转账,买东西。会造成个人隐私泄露和财产安全。

攻击原理
就是你在登录一个网站A的时候,会产生一个cookie,当你还没有登出这个网站时,你又去访问了一个危险网站,这个危险网站要求访问A,发送了一个request。
看似简单,但是有时无法避免
你不能保证你在切换网页的时候登出一个网站,还有在你关闭网页的时候,cookie可能还存在。
示例
你登录a网站进行银行转账的请求,如

http://www.mybank.com/Transfer.php?toBankId=11&money=1000

然后你又去访问危险网站b,他里面有这样的一段代码

<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>

这样你会发现你的银行帐号少了1000块钱。
这是一个简单例子,当然实际的银行不会这么傻。


CRSF防御
* 服务端进行防御
在客户端页面增加伪随机数

 <?php
    //构造加密的Cookie信息
    $value = “DefenseSCRF”;
    setcookie(”cookie”, $value, time()+3600);
  ?>

然后在客户端增加hash值

<?php
    $hash = md5($_COOKIE['cookie']);
  ?>
  <form method=”POST” action=”transfer.php”>
    <input type=”text” name=”toBankId”>
    <input type=”text” name=”money”>
    <input type=”hidden” name=”hash” value=”<?=$hash;?>”>
    <input type=”submit” name=”submit” value=”Submit”>
  </form>

然后在服务端进行校验

<?php
        if(isset($_POST['check'])) {
             $hash = md5($_COOKIE['cookie']);
             if($_POST['check'] == $hash) {
                  doJob();
             } else {
        //...
             }
        } else {
      //...
        }
      ?>

验证码防御
.One-Time Tokens(不同的表单包含一个不同的伪随机值)
验证 HTTP Referer 字段
查看请求的网站是否是自己的请求
在 HTTP 头中自定义属性并验证
通过xhr这个类把所有的请求加上crsftoken这个http头属性
但是太麻烦

网络层的协议有哪些

看下面这张表
从底向上1-7层模型

应用层DHCP DNS FTP Gopher HTTP IMAP4 IRC NNTP XMPP POP3 · SIP SMTP SNMP SSH TELNET RPC RTCP RTP RTSP SDP SOAP GTP · STUN NTP SSDP
表示层HTTP/HTML · FTP · Telnet · ASN.1(具有表示层功能)
会话层ADSP·ASP·H.245·ISO-SP·iSNS·NetBIOS·PAP·RPC·RTCP·SMPP·SCP·SSH·ZIP·SDP(具有会话层功能)
传输层TCP · UDP · TLS · DCCP · SCTP ·RSVP · PPTP
网络层IP (IPv4 · IPv6) · ICMP · ICMPv6 · IGMP ·IS-IS · IPsec · BGP · RIP · OSPF ·ARP · RARP · ipx
数据链路层Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) ·ATM · DTM · 令牌环 · 以太网路 ·FDDI · 帧中继 · GPRS · EVDO · HSPA · HDLC · PPP · L2TP · ISDN ·STP
物理层以太网路卡 · 调制解调器 · 电力线通信(PLC) · SONET/SDH(光同步数字传输网) ·G.709(光传输网络) · 光导纤维 · 同轴电缆 · 双绞线
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值