web安全

中间人攻击

指黑客在http报文传输过程中,伪装成目的服务器,截获、篡改http报文。
https目前是预防中间人攻击的有效方案。
https使用了证书(非对称加密+签名)可以检测出报文是否被篡改。

重放攻击

可以通过设置动态数字及过期时间等预防重放攻击。

CSRF跨域

摘要认证 - 密文、防止篡改、重放攻击

基本认证,只是对传输的用户名、密码做Base64编码,很容易解码获得原始用户名和密码,相当于是明文传输。

MD5 - 密文

MD5,指的是“报文摘要的第五版”(Message Digest 5)。
摘要认证,使用MD5对密码做摘要,生成一个固定位数(128位,32个16进制字符)的字符串,客户端发送和传输的是用户名和密码的摘要。并且由于MD5是不可逆的,因此即便攻击者截获报文后,也无法逆推出原始密码。
服务器得到用户名和密码的摘要后,根据用户名从服务器数据库中获得其密码,并对这个密码做MD5摘要,如果这个摘要和客户端发来的密码的摘要相同,则认证通过。
还有其它的摘要算法:RSA SHA 等,都是不可逆的散列算法

nonce - 防止重放攻击

nonce,是 number once的缩写,一次性数字。

虽然摘要认证使得攻击者无法获得原始密码,但是攻击者截获了用于认证的报文后,再伪装成客户端重新发送相同的用户名和摘要,仍然能通过服务器的认证,这就是重放攻击。

使用nonce预防重放攻击:摘要认证的三次握手机制:
第一步,在摘要认证方式下,当服务器发现客户端要访问的资源需要认证和权限时,会计算出一个随机数。然后将这个随机数放在响应报文的名为 WWW-Authenticate 的header中,发送给客户端:

WWW-Authenticate: Digest realm="myweb", qop="auth", nonce="1650698119472:f80618756ae2325b94f3ee5e5b629e8d", opaque="5A2D4772B1A56C589CE35E6518F008A9"

客户端收到质询报文后,从服务器给出的摘要算法中选取一个,拿来计算(密码和nonce)拼接的字符串的摘要,然后将其放到报文的 Authorization Header中,回送给服务器。如下示例中response属性值就是摘要:

Authorization: Digest username="tomcat", realm="myweb", nonce="1650698119472:f80618756ae2325b94f3ee5e5b629e8d", uri="/myweb/autoCorrectForm.jsp", response="7cfa1d28bedbb1e71f5cd200b8ecf796", opaque="5A2D4772B1A56C589CE35E6518F008A9", qop=auth, nc=00000002, cnonce="12ac984682339772"

服务器收到认证报文后,服务器每次接收到报文后,先检查相同的用户名和nonce是否已经使用过(以前摘要认证通过了的用户名和nonce会被存储到服务器本地),如果检查发现已经使用过,则认证失败。然后再根据发来的用户名从数据库取得对应的密码,再对(取得的密码和发来的nonce拼接的字符串)做摘要,如果这个摘要和客户端发来的摘要一致,则认证通过。

由于nonce是随机生成的,每次都不一样,则摘要每次也都不一样,攻击者重新发送相同的用户名和摘要和nonce,就无法通过服务器的认证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值