图解HTTP(3) 安全

七、确保Web安全的HTTPS

      HTTP主要有这些不足:

  • 通信使用明文(不加密),内容可能会被窃听
  • 不验证通信方的身份,因此有可能遭遇伪装
  • 无法证明报文的完整性,所以有可能已遭篡改

    通信的加密:和SSL组合使用的HTTP被称为HTTPS


    内容的加密:客户端和服务端需要加密和解密

    如何防止篡改:常用的是MD5和SHA-1等散列值校验的方法,以及用来确认文件的数字签名方法。

    HTTPS = HTTP + 加密 + 认证 + 完整性保护

    经常会在Web的登录页面和购物结算界面等使用HTTPS通信

八、确认访问用户身份的认证

     何为认证:客户端需要自报家门,HTTP/1.1使用的认证方式如下:

     BASIC认证(基本认证):不常用

     DIGEST认证(摘要认证):不怎么用

     SSL客户端认证:虽具有高度的安全等级,但需要费用,尚未普及

     FormBase认证(基于表单认证):客户端发送登录信息



    基于表单认证:一般会使用Cookie来管理Seesion


步骤1:客户端把用户ID和密码等登录信息放入报文的实体部分,通常是以POST方法把请求发送给服务器。而这时,会使用HTTPS通信来进行HTML表单画面的显示和用户输入数据的发送。

步骤2:服务器会发放用以识别用户的Session ID。通过验证从客户端发送过来的登录信息进行身份认证,然后把用户的认证状态与Session ID绑定后记录在服务器端。向客户端返回响应时,会在首部字段Set-Cookie内写入Session ID(如PHPSESSID=028a8c...)。你可以把Session ID想象成一种用以区分不同用户的等位号。然而,如果Session ID被第三方盗走,对方就可以伪装成你的身份进行恶意操作了。因此必须防止Session ID被盗,或被猜出。为了做到这点,Session ID应使用难以推测的字符串,且服务器端也需要进行有效期的管理,保证其安全性。另外,为减轻跨站脚本攻击(XSS)造成的损失,建议事先在Cookie内加上httponly属性。

步骤3:客户端接收到从服务器端发来的Session ID后,会将其作为Cookie保存在本地。下次向服务器发送请求时,浏览器会自动发送Cookie,所以Session ID也随之发送到服务器。服务器端可通过验证接收到的Session ID识别用户和其认证状态。

    通常对密码加盐(salt)的方式增加额外信息,再使用散列(hash)函数计算出散列值后保存。


猜你喜欢

转载自blog.csdn.net/qfire/article/details/80875780
今日推荐