设为首页 收藏本站
查看: 1706|回复: 0

[经验分享] 对网络安全性和apache shiro的一些认识

[复制链接]

尚未签到

发表于 2015-8-3 10:28:35 | 显示全部楼层 |阅读模式
  更多信息,请参考:http://www.cxyeye.com/
  Apache Shiro 是什么?
  Shiro 是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障
  为什么要使用它?
  1:登陆验证是WEB应用中非常常见的一个功能;
  2:对于授权,大部分应用停留在判断session为空跳回登录首页的阶段,正确的做法是能根据用户的较色权限,授予不同用户不同目录的访问权限;
  3:客户端和服务端的数据传递,以及服务器之间的调用,敏感信息需要进行加密。目前很多应用甚至没有这个功能;
  4:验证,授权,加密,最好有一个统一的平台去完成这些功能,shiro就是这样一个解决方案;你可以自己去实现这些功能,但有成熟的开源的产品为什么不用呢?
  Apache Shiro 的一些核心思想
  1:配置文件定义的内容



[main]
ds = com.mysql.jdbc.jdbc2.optional.MysqlDataSource
ds.serverName = 127.0.0.1
ds.user = root
ds.password = root
ds.databaseName = test
ds.url = jdbc:mysql://127.0.0.1:3306/test
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.authenticationQuery = SELECT password FROM ho_user WHERE name = ?
jdbcRealm.userRolesQuery = SELECT role FROM ho_user WHERE name = ?
jdbcRealm.permissionsQuery = SELECT permission FROM ho_user WHERE name = ?
jdbcRealm.dataSource = $ds
authc.loginUrl = /common/login.jsp
perms.unauthorizedUrl = /common/login.jsp
roles.unauthorizedUrl = /common/login.jsp
[urls]
/action/* = authc
/admin/**=authc,perms[high]
/system/**=authc,perms[high] 
  每个框架都会有自己的一些配置文件,shiro的配置是基于key-value。
  1:定义验证用户的SQL
  2:定义获取用户角色的SQL
  3:定义获取用户权限的SQL
  4:定义验证不通过时返回的页面
  5:定义需要授权的目录以及授权条件
  2验证用户登陆的异常思想



try {
currentUser.login(token);
} catch (IncorrectCredentialsException ice) {

} catch (LockedAccountException lae) {

}

catch (AuthenticationException ae) {…
}
  通过异常机制判断用户的验证结果
  3:哈希和加密的简单实用,哈希和加密用于确保数据传输过程中对敏感数据的保护。当保护需要转换回来时需要用加密,反之用哈希;保护不仅对字符有效,对文件二进制的数据一样有效。
  哈希是不可逆的,哈希的结果长度无关跟原值无关 (例如文件的哈希)



String hex = new Md5Hash(myFile).toHex();

  加密是可逆的;加密随着原值长度线性增长。



AesCipherService cipherService = new AesCipherService();
cipherService.setKeySize(256);
//创建一个测试密钥:
byte[] testKey = cipherService.generateNewKey();
//加密文件的字节:
byte[] encrypted = cipherService.encrypt(fileBytes, testKey);
  4: web支持(一般框架都是接触这种方式,servlet或者filter




ShiroFilter

org.apache.shiro.web.servlet.IniShiroFilter




ShiroFilter
/*

  有一点可贵的是,shiro的会话管理,它可以在系统的任何位置,通过工厂的方式,得到当前对话的session
  Session session = subject.getSession();
  session.getAttribute("key", someValue);
  总结
Shiro为解决下列问题(我喜欢称它们为应用安全的四要素)提供了保护应用的API:

  认证 - 用户身份识别,常被称为用户“登录”;
  授权 - 访问控制;
  密码加密 - 保护或隐藏数据防止被偷窥;
  会话管理 - 每用户相关的时间敏感的状态
  以下是对安全性的一些认识:
  1:目录是否有严格的访问限制
  2:验证码是否符合标准,会话超时时间,注销session的清空,登录用户暴力测试的锁定;
  3:用户名,密码等敏感信息的HTTPS 加密传输
  4:文件上传下载的 类型限制;目录限制安全
  5:系统配置文件,日志安全
  摘录:
  让Apache Shiro保护你的应用 http://www.infoq.com/cn/articles/apache-shiro
  Apache Shiro在Web中的应用 http://blog.iyunv.com/stuqbx/article/details/7178406
  apache shiro 管理用户权限与数据库交互 http://www.open-open.com/doc/view/453bc4f22d83435ab2bfb6768c41ac90
  Apache Shiro 使用手册 http://www.open-open.com/doc/view/8cf6f10a10d0497cbcbc3a9931354c62
  更多信息,请参考:http://www.cxyeye.com/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-93603-1-1.html 上篇帖子: Apache Rewrite服务器变量介绍 下篇帖子: apache mina + myeclipse
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表