Giter Club home page Giter Club logo

securityinjava's Introduction

Build Status

               == SecurityInJava-6.0.0 doc ==

1. Introduction

1.1 背景

应用开发框架是软件产业的基石

  • 应用开发框架是一种计算机软件框架,用来支持网站、网络应用程序及网络服务的开发,提升了代码重用性,以减少应用开发者工作量。
  • 伴随过去20年IT技术演进,适用于桌面、移动等场景的应用开发框架已经成为应用软件产业的基础支撑。
  • 政企信息化围绕业务应用为核心,应用框架是建设业务功能和安全能力的源头。

行业痛点

  • 按Gartner统计,仅OWASP十大安全脆弱性就导致了50%漏洞
  • 今天大量的企业数据泄露事件,很大比重与应用漏洞有关
  • 应用系统上线后修补漏洞成本极高,而防火墙等外挂式安全手段无法弥补

甲方安全合规痛点

  • 十三五的信息化升级和云迁移改造,带来了增强架构安全的机遇期
  • 国家推行的系列安全政策,需配套专业厂商支撑的安全应用框架
  • 代码安全审查和漏洞扫描整改,需要应用框架作为抓手
  • 国家在大力推广商用密码,而高质量密码体系关键在于“用密码”,应用框架内建密码套件能有效构建高质量密码供给体系

问题根源

  • 应用开发人员普遍缺失安全认知,且安全能力薄弱,应用开发中缺失安全
  • 安全人员更多侧重攻击视角,很少涉及应用代码安全
  • 安全厂商没有从应用开发视角提供有效解决方案

驱动力

  • 【内因】大量应用建设上线后安全漏洞凸显,行业客户对安全重视日益提升
  • 【外因】强制的代码安全扫描和检查正在形成新行业规范

1.2 项目介绍

SecurityInJava是一个开源项目,把专业安全和应用开发实践结合起来,提供一套开源的安全应用开发框架,降低应用开发人员对安全的使用门槛,从应用系统源头增强安全。SecurityInJava的核心是以“安全+高效开发”为目标的Java应用开发平台,针对Java经典SSM框架(Spring MVC+Spring+MyBatis,适用于常规企业应用开发,尤其是管理平面的应用)和Java企业级异步开发框架(基于Vert.x,适用于超高并发场景)两大领域,提供专业的安全编码最佳实践,并内置安全模块,包含商用密码算法模块(即国密算法)、基于ABAC的访问控制、认证模块等,以大幅增强Java应用开发的安全性。

提供两套通用场景的最佳实践(不是造新轮子,而是用好已有的技术)

  • Spring Boot/MVC/Core/JPA+MyBatis(SSM),适用管理软件及常规应用场景
  • Java企业级异步开发框架(基于Vert.x),适用于超高并发场景

由于安全和应用分工不同,造成目前应用开发框架普遍缺失内生安全机制。根据Gartner统计,仅仅OWASP Top 10的安全缺陷就导致了50%的漏洞。我们相信,随着SecurityInJava的完善和普及推广,能够从开发源头显著改善应用系统的安全性,实现“Build Security Into Application”。同时SecurityInJava提供的安全能力是“应用内生的安全”,和后期补漏洞技术相比,具有投入成本极低、安全防护效果极高的特点。按照滑动安全标尺模型,这属于架构安全(Architecture Security)的范畴,SecurityInJava考虑到架构的灵活适应设计,同时能够为后续的被动防御、积极防御等提供良好基础。

安全是发展的保障,失去了安全,我们拥有的业务功能价值越高,风险也会越高,所以对应用进行安全增强刻不容缓。在此,我们呼吁广泛的软件应用同行和安全同行马上行动起来,联手为下一步信息基础设施增加安全保障。Java在**应用开发市场占比超过50%,所以首选从Java入手作为突破,但是对于Python、PHP、C#、Go等其他应用级开发语言同样也需要内生安全能力,更多的“SecurityInX”项目在我们的工作规划中。

炼石愿景和使命

【炼石愿景】让数字化业务更安全

【炼石使命】将数据安全适配进业务流程,构筑应用安全生态,保障企业业务发展

【炼石核心价值观】为客户提供有价值的安全产品

【炼石理念:Build Security In】

  • 把加密、访问控制、检测分析等安全能力融入到广泛的企业应用系统中,保护国家秘密、商业秘密和公众隐私
  • 软件应用与安全行业形成能力融合,共同构筑健康的安全生态

1.3 业务功能介绍

应用功能优势

  • 支持父子表、多对多表的智能关系分析及生成
  • JavaEE标准版的代码生成器,可以做企业应用、互联网后端、2B的门户、及网站前台(需要单独设计页面)
  • 跨平台的Mobile端的代码生成器(即将发布),用一套代码通吃iOS各版本、Android各版本、winphone,可用于企业移动端应用、2C的轻应用
  • 安全强化JavaEE版的代码生成器(即将发布),吸纳了“Build Security In” + OWASP + MASS,适用于对安全有要求的应用开发

革命性的代码生成器新理念

  • 支持本地模板源和远程模板源的扩展,这样能引入模板供应商(Template Provider),使得代码生成以在线服务的方式提供
  • 模板虚拟机的设计,可以扩展为支持多样的Model格式、多样的模板引擎、多样的处理流程

架构及技术优势

  • 松耦合的设计,不仅支持生成Java工程,也可以生成大多数语言和框架的工程,无需改代码,只需要加模板
  • xslt 2.0语法格式的模板,功能强大,前景好(因为html5的xml良构会带来xslt的第二春)
  • 纯maven + 纯OSGI的架构,高度组件化,支持一键编译

2. 当前项目状态

Current Version: 6.0.0

Supported

####Web Browsers

  • Chrome (Latest stable version)
  • Firefox (Latest released version)
  • Safari 7+ (Know problem: required fields in html5 do not work)
  • Opera (Latest released version)
  • IE 10+

####Java

  • Java 8.0 or greater

####Database

  • Mysql
  • Oracle
  • Sql Server
  • H2

####Middleware

  • Tomcat
  • WebSphere Application Server
  • Weblogic

Contributing

If you find this image useful here's how you can help:

  • Send a Pull Request with your awesome new features and bug fixes
  • Help new users with Issues they may encounter

Issues

If you found a issue, please post a issue request on the issues page.

In your issue report please make sure you provide the following information:

  • The host distribution, environment and release version.
  • The log infomations.

3. Installation

3.1 编译打包

一键编译securityinjava-6.0.0 Java工程

	1,git clone https://github.com/ciphergateway/securityinjava
	2,先安装基础jar包和必要组件到$M2_REPO。
		cd securityinjava
		mvn clean package【注:第一次执行需要下载关联maven资源,第二次执行就很快,建议配合本地Nexus使用】
	3,把securutyinjava-ssm/WebContent/目录发布到Tomcat-6.0.0以上或其他JavaEE中间件即可运行。

一键编译securityinjava-6.0.0 Eclipse插件的方式(含Java工程打包)

eclipse/plugins目录格式,直接复制到Eclipse/links下,安装快。要求是eclipse的JavaEE/jee版,同时Eclipse版本>=3.7

	1,git clone https://github.com/ciphergateway/securityinjava
	2,先安装基础jar包和必要组件到$M2_REPO。
		cd securityinjava/support/build-all
		mvn clean package 【注:第一次执行需要下载大量maven资源,并从Eclipse官方站下载资源,第二次执行可以加上离线参数-o以加快编译,即mvn package -o】
		【注:如果报错,请尝试执行多次mvn package
	3,安装插件包。
		securityinjava/support/build-all/build-securityinjava-ssm/target/eclipse目录,到$ECLIPSE_HOME/links/javasec_6.0.0目录【注:在$ECLIPSE_HOME目录下新建links目录】。
		最终结构如下:$ECLIPSE_HOME/links/securityinjava_6.0.0/eclipse/plugins/...
	4,重启Eclipse即可

【备用打包方式】updatesite格式的安装版,安装到Eclipse时较慢。但安装时会自动下载所需的依赖插件,要求Eclipse版本>=3.7

	1,使用Linux下的ln -s(或windows下的junction),把qb-archetype/quickbundle-rmwebdemo目录软链接到qb-core/eclipse-plugin/quickbundle-gp/t/j1目录。
	2,安装maven-3.0.5,在qb-core目录下,执行mvn install,即可安装到$M2_REPO/org/quickbundle/org.quickbundle.mda.updatesite/4.0.0/org.quickbundle.mda.updatesite-4.0.0.zip。

3.2 Quick Start

Download lastest release.

4. Architecture

4.1 基础jar包和Eclipse插件源代码模块介绍

包含基础jar包5个:

	support/java-lib/quickbundle-tools  基础工具jar包,是一些其它quickbundle-xxx.jar的基础
	support/java-lib/quickbundle-core  核心jar包,依赖于Spring
	support/java-lib/quickbundle-mybatis  mybatis扩展
	support/java-lib/quickbundle-springweb  spring mvc扩展
	support/java-lib/quickbundle-struts  struts1 扩展

Eclipse插件

	support/eclipse-plugin/org.quickbundle.mda.libs  osgi下的jar包接入点
	support/eclipse-plugin/quickbundle-gp  项目生成器
	support/eclipse-plugin/quickbundle-mvm  模型虚拟机
	support/eclipse-plugin/quickbundle-gc  代码生成器
	
	support/eclipse-plugin/org.quickbundle.mda.feature  Eclipse插件组合的feature工程
	support/eclipse-plugin/org.quickbundle.mda.updatesite  Eclipse插件的在线/离线安装包的组合工程

骨架工程介绍

目前包含:基于SSM的JavaEE标准版。

待整合:Vert.x。

securityinjava-ssm

  • JavaEE 2.5项目骨架,Maven规范
  • 主框架是jQuery-1.9 + Html4 + Spring MVC 3.2 + Spring 3.2 + MyBatis 3.2
  • 集成了Jackson-2.1(Json) + Apache CXF-2.5(web service) + JFreeChart-1.0(图表) + JasperReport-4.7(报表) + mail-1.4(邮件) + jxl-2.6(Excel) + dom4j-1.6(xml) + slf4j-1.7(日志) + jython-2.7(Python运行库)
  • 内置组织权限(设计**源自Martin Fowler的《分析模式》) + 分布式调度(基于quartz-2.1增强了管理界面) + 编码数据管理 + 附件管理 + 业务日志 + 业务锁
  • 待增加:Activiti-5.13(工作流引擎,增强了组织适配器、流程管理器等) + MuleESB-3.4(ESB企业服务总线) + Drools-6.0(规则引擎)

适用场景:企业应用、互联网应用后端。

4.2 Web Security

安全应用框架

安全强化的Java Web版(后端+PC端),Mobile版。
对JavaEE标准版,以“Build Security In”的**彻底重构之后的注重安全的Java Web应用框架。适用场景:对安全有要求的企业应用、互联网应用后端。

特性

  • 以JavaEE标准版(quickbundle-rmwebdemo)为基础 【引用】,以OWASP Java Project【参考】为指导做安全方面的深度重构。

  • 集成Spring Security 3.1【参考】,兼容数据安全中间件Ralasafe v2【参考】

  • 导入ESAPI-2.1的安全规范写法并精心定制,并以WebGoat-5.4【参考】为样本全面修复可能存在的安全缺陷,并针对OWASP Top 10【参考】做框架代码安全加固,重点是:

      A1-注入
      A2-失效的身份认证及会话管理
      A3-跨站脚本-CSS
      A4-不安全的直接对象引用
      A7-功能级访问控制缺失
      A8-跨站请求伪造-CSRF
      ESAPI-2.1加固
    
  • 针对设计和开发阶段,整理一套以"Build Security In"为指导的风险分析规范,以及按具体业务做设计的方法论体系。

  • 针对集成部署阶段,形成一套混淆编译规范及工具【参考】,形成一套完整的安全实施过程模板,重点是:

      A5-安全配置错误
      A6-敏感信息泄漏
      混淆编译规范及工具
      Linux主机加固、中间件加固
      涵盖SSL、PKI的安全配置模板
    
  • 针对运维阶段,编写一套ruby脚本做自动化的配置漏洞检查,并以主流漏洞扫描器(如AppScan、Acunetix WVS等)做辅助验证。并部署一套重构后的安全应用框架实例到靶机,持续攻防测试并持续改进。

  • 将上述应用安全框架成果,提炼到基于MDA的代码生成器模板【引用】中,并发布为Eclipse plugin形式(支持Eclipse3.7及以上),“逐鹿安全应用框架”的用户(应用开发者)可以快速构建并生成Java应用代码。

5. Upgrading

6. References

securityinjava's People

Contributors

phh-cg avatar quickbundle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

paulvi

securityinjava's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.