Web安全机制
非对称加密
私钥加密后的密文,只要是公钥,都可以解密;但是公钥加密后的密文,只有私钥可以解密。私钥只有一个人有,而公钥可以发给所有的人。
- Bob的公钥加密后的message只有Bob的私钥才能decrypted
- 使用Alice的公钥,可以判断消息的签名是否由Alice私钥的拥有者创建
Compared with Common Key Crypto System
- 无须共享密钥
- 处理速度偏慢
Web加密通信
待解决问题
- 如何安全地将密钥转发给通信对象?
- 如何证明 public key (for encryption of client secret) 真的是由目标服务器发布的?
数字证书机构 Certificate Authority
- CA的公钥(decrypt)预先植入客户端,可以信赖。
- CA用私钥加密证书 (signature) ,客户端用公钥解密,验证证书。
验证: 解密得到的证书编号与声明的编号相同?
数字签名
- 消息的一份摘要 (Hashing),使用发送者的私钥加密。
- 接受者使用发送者的私钥解密,验证摘要和消息内容一致,说明消息没有被中途篡改。
HTTPS
- S for SSL / TLS (TLS 1.0 is enhanced version of SSL 3.0)
跨站脚本攻击 Cross Site Script
非持久型
问题: URL包含恶意脚本。
策略:
- 前端渲染对任何字段都转义
持久型
攻击: 将恶意代码post进入数据库;后续前端渲染该数据时就会执行。