
本文共 1555 字,大约阅读时间需要 5 分钟。
简单权限之密码加密
密码是系统安全的关键所在,特别是在FineReport内置数据库FineDB中存储的密码一旦被破解,可能导致严重的安全威胁。本文将介绍如何通过加密技术有效保护系统安全。
问题描述
在FineReport平台内,当用户通过内置功能进行认证时,输入的密码需要与数据库中的密码一致才能成功认证。然而,如果数据库被破解,攻击者可以轻松获取用户的敏感信息,导致潜在的安全风险。因此,如何确保密码存储和传输的安全性显得尤为重要。
解决方案
在密码存储和验证过程中,采取加密技术是保护系统安全的有效方法。通过将密码存储为加密后的密文(而非明文),可以显著提高破解难度,从而保护用户信息不被泄露。
加密实现原理
1. 内置 SHA 加密
默认情况下,系统使用SHA加密对输入的密码进行加密处理,生成密文与数据库中的密码进行匹配。这种方法简单且安全,能够有效防止密码泄露。
2. 自定义密码加密
为了满足特定需求,可以自定义密码加密规则。系统支持两种接口实现方式:
只加密密码:通过
String encode(String originText)
接口,将密码直接加密生成密文。加密用户名和密码:通过
String encode(String originUserName, String originPassword)
接口,同时对用户名和密码进行加密处理。
自定义密码加密示例
以下是几种常见加密方式的实现示例
BASE64 加密
定义加密类
- 定义一个名为
Base64PasswordValidator
的类,继承自AbstractPasswordValidator
。 - 使用
String encode(String originText)
接口对密码进行加密。
类别位置
将编译后的Base64PasswordValidator.class
文件放置在/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege/encrpt
目录下。
平台设置
- 在FineReport平台的“用户同步数据集”管理界面,选择“自定义加密类”,并上传BASE64加密类文件。
SHA256 加密
定义加密类
- 定义一个名为
CustomSHA256PasswordValidator
的类,继承自AbstractPasswordValidator
。 - 使用
String encode(String originUserName, String originPassword)
接口,对用户名和密码同时进行加密。
类别位置
将编译后的CustomSHA256PasswordValidator.class
文件放置在/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege/encrpt
目录下。
平台设置
- 在FineReport平台的“用户同步数据集”管理界面,选择“自定义加密类”,并上传SHA256加密类文件。
MD5 加密
下载加密类
- 下载现有的MD5加密类文件,将它放在
%FR_HOME%\webroot\WEB-INF\classes\com\fr\decision
目录下。
平台设置
- 在FineReport平台的“用户同步数据集”管理界面,选择“自定义加密类”,并上传MD5加密类文件。
支持用户名加密
- 如果需要同时加密用户名和密码,使用同样的MD5加密类文件,并通过
String encode(String originUserName, String originPassword)
接口进行操作。
此外,FineReport平台支持灵活的加密方式拓展,可根据实际需求自定义加密算法和策略,从而为系统安全提供坚实保障。
发表评论
最新留言
关于作者
