Spring Security中 salt 的最佳使用

salt, 盐, 用来做什么? 自己搜索下吧, 不解释这个基础的问题.

Spring Security中使用salt 有以下方式:

1.不使用 salt                       (强烈不推荐)

配置如下

1

使用 sha-256 加密

 

2.使用固定的salt 值          (不推荐)

配置如下

2

此处配置的固定值: my-salt

 

3.使用UserDetails中的一个属性值, 通过反射动态获取   (推荐)

配置如下

3

使用UserDetails中的username 属性的值为salt

 

4.自己实现 SaltSource.java 类,扩展性好           (推荐)

配置如下

4

使用扩展的 MySaltSource , 自定义实现,扩展性强

 

最佳使用实践

1. 使用UserDetails 的某一属性为salt的动态值 , 但这个属性不要与用户相关(如username), 比如定义一个 saltValue 属性, 每次创建时随机生成此值并存储,不修改.

2.扩展 SaltSource.java实现 , 比如使用两种加密算法去加密等.

 

另外

1. 对password的加密使用不可逆的算法实现, 如: SHA-XXX,  MD5 , 不能使用可逆的加密, 如: AES

2. password是敏感数据, 切不可记录到日志中, 保存在许多地方等.

我们需要你, JAVA大才

我们需要你, 在成都,在高新;

我们需要你,5年经验算基本;

我们需要你,学士,硕士或博士;

我们需要你, 扎实JAVA (Security)基础;

我们需要你,能把Spring框架玩的团团转;

 

我们需要你,能进出Linux畅通无阻;

我们需要你,Maven,MongoDB与IDE(A);

我们需要你,把简历投到这里.

 

我们需要你,期待你,等待你,盼望你…

joinus

Spring Security使用X509实现认证

在Spring Security的API文档中有一页专门介绍 集成X509进行认证的(http://docs.spring.io/spring-security/site/docs/3.0.x/reference/x509.html), 但是很不详细.

在实现认证之前先来说下X509,

X509是一种国际标准(具体为ITU-T X509),是一种通用的证书格式, 常用的文件后缀如 .p12, .pfx. (依据不同的CA厂商提供的有所区别)

一些概念,如 DN, 加密算法(alg), 证书有效期(validity)也是需要先了解清楚

而实际上X509是很多安全传输与认证的基础, 最常见的是SSL (https访问) 就是一具体实现

集成X509后的Spring Security会实现双向认证(HTTPS是单向认证, 即只有浏览器对服务器的, 而没有服务器对浏览器的).

Spring Security在整个过程中,其实只是使用了DN的属性值来获取用户名,然后去认证这个用户名是合法的即可(没有密码的验证, 因为双向证书已经是可信的).

— 意味着没有Spring Security X509也能工作

 

即整个集成大部的工作是在客户端与服务器中配置, 包括先获取证书, 安装证书(客户端), 将客户端证书导入到服务器配置中等.

具体的步骤下面这篇文章讲的很清楚, 请移步查阅

http://www.68idc.cn/help/buildlang/java/2014021668868.html (Spring Security 学习之X.509认证)

 

 

更多参考

Tomcat生成https+ssl双向证书认证
https://jingyan.baidu.com/article/0f5fb099f1f9566d8334ea38.html

 

若需要帮助请访问 https://gitee.com/mkk

2nd-Lock – 一把「微信 + 二次认证」锁 [产品推荐]

一个使用 微信 作为二次认证的小产品.

产品目的: 提高 网站+APP 安全

产品介绍: 通过结合用户使用的 微信 与开发者网站 二次认证 功能,我们能完美契合二者的优点,在登录的同时,让你的用户用微信端扫码进行二次认证加固安全,并让你的所有用户原因转化为你的公众号关注者

 

http://www.idssso.net/

 

请大家评价, 反馈,….

Java HeartBeat 1.0.0 发布

在经历近一年的不知所措后(2016-08-15到2017-07-09), 更新了 HeartBeat 1.0.0 版本,Java HeartBeat是心跳检测应用服务器(如Tomcat,Jetty)的JAVA WEB应用程序。

1.0.0版本主要是功能完善与修复BUG, 主要内容如下:

1).添加更多监控时间,如2分钟,3分钟,5分钟,10分钟,半小时,1小时
2).Fix 设置多次失败后在提醒时的错误,以及恢复后的提醒
3).增加设置定期清理一段时间(默认为30天)前的监控日志记录,防止frequency_monitor_log表太大导致查询慢
4).修复未登录时不能查看到私有实例的日志
5).Fixed Issue #26 关于邮件发送次数的问题

 

HeartBeat 1.0.0版本访问地址: http://git.oschina.net/mkk/HeartBeat/tree/V-1.0.0/

http://git.oschina.net/mkk/HeartBeat

我与Git@OSC的四年多时光

    "followers": 119,
    "following": 4,
    "stared": 23,
    "watched": 64,
    "created_at": "2013-06-17T00:37:29+08:00",

一看日期 2013-06-17, Git@OSC新开放的API, 竟然有如此的功能, 可喜.

时间已经过去4年多,记得查看Git@OSC 开始运作日期是 2013-05-27, 注册早,算是最老一批用户了吧.

感谢这个可以创建私有库与公有库的GIT家伙. 让我们不再为找一个可托管的代码库而伤神, 特别是单个独立的开发者, 不管是开源的,还是闭源的项目.

无论是从哪有时一上午都不能PUSH代码,还是上了高防DDOS后经常响应403的状态码,不能愉快的PUSH;都已成往事; 好几次提醒Git@OSC 该收费了啊,后来收费了(企业版本),很好,心里踏实了,公司也更放心.

……

仅此, 感谢Git@OSC后台团队的辛苦劳作,幕后!!

你值得拥有Git@OSC,不管你是用来存代码, 放文件, 还是当作网络硬盘,备份库,皆爽..

http://git.oschina.net/

 

scp 无密码传输文件

scp 实现两台Linux Server之间传输文件, 但每次都需要密码–麻烦

不需要密码是可以的(特别是在使用shell文件传输文件时非常有用)

 
假设有两台机器A, B , 需要将A上的文件使用scp 复制 到 B机器上

1.先在A机器上运行命令
ssh-keygen -t rsa
一直按回车键直到结束

成功后会在用户目录生成 .ssh 目录
cd ~/.ssh

2.查看 id_rsa.pub 文件并复制所有内容

cat id_rsa.pub

3. 进入B机器并进入 ~/.ssh 目录 (若没有则创建)

cd ~/.ssh

新建文件 authorized_keys 文件 并将复制的内容添加进去
并保存

若authorized_keys文件已经存在则内容追加到文件中
或使用cat >> 命令追加, 具体如下

1).新建一个临时文件如 aaa.pub, 将复制的内容放到该文件中并保存

2). 执行 cat 命令
cat aaa.pub >> authorized_keys
即可.

完成后使用命令 cat authorized_keys 查看追加的内容

以上操作完成, 使用scp命令从A向B机器复制内容时可不需要B机器密码