Web应用安全:密码哈希、日志处理与跨域请求
1. 密码哈希
在Web应用中,存储用户密码时进行哈希处理是一种常见的安全做法。哈希就像是数字指纹,是一段小信息,可作为更大信息的唯一标识符。有许多哈希算法,其中一些很难(甚至几乎不可能)逆向破解,这些被称为加密哈希,最常见的算法有MD5和SHA - 1。
1.1 原理与优势
在Web应用中,哈希最常见的应用就是存储密码。当用户注册并提供账户密码时,对其进行哈希处理(例如使用MD5),然后将哈希值存储在数据库中。下次用户登录时,再次提供密码,应用对输入进行哈希处理,并与存储的哈希值进行比较。如果哈希值匹配,则密码必定匹配,即使密码本身是未知的。
这样做的优势在于,用户的密码不会存储在系统的任何地方,从而降低了密码被泄露的风险。例如,一个社区网站很受欢迎,有成千上万的用户注册。如果攻击者获取了数据库访问权限,若存储的是明文密码,攻击者不仅可以访问该网站,还可能访问用户在其他使用相同密码的账户(如电子邮件、银行账户等)。而只存储哈希密码,能大大降低潜在的损害。
1.2 实现示例
以下是一个简单的用户模型示例,提供了密码哈希功能:
require 'digest/sha1'
class User < ActiveRecord::Base
# Virtual attribute for the plaintext password
attr_accessor :password
validates_uniqueness_of :login
validates_presenc
超级会员免费看
订阅专栏 解锁全文
836

被折叠的 条评论
为什么被折叠?



