| Java Training   Overview 
				
This course shows Java web developers how to secure their applications and to apply best practices with regard to secure enterprise coding. Authentication, authorization, and input validation are major themes, and students get good exposure to basic Java cryptography for specific development scenarios, as well as thorough discussions of HTTPS configuration and certificate management, error handling, logging, and auditing.
Java Training   Prerequisites
 Perhaps the most eye-opening parts of the course concern common web "hacks," or attack vectors. Students see how easy it is to leave an application unguarded against cross-site scripting (XSS), cross-site request forgery (CSRF), SQL injection, and other attack types -- and learn that it's also easy to fix such vulnerabilities and the importance of a secure development process.
 
Java Training  Learning ObjectivesJava programming experience is essential -- Course "Java Programming" is excellent preparation.Servlets programming experience is required -- Course "Java Servlets"JSP page-authoring experience is recommended but not required 
 After completing this course, the student should be able to:
		 
		Server Support: TomcatGenerally, be prepared to develop secure Java web applications, or to secure existing applications by refactoring as necessary.Define security constraints and login configurations that instruct the web container to enforce authentication and authorization policies.Guard against common web attacks including XSS, CSRF, and SQL injection.Validate user input aggressively, for general application health and specifically to foil injection and XSS attacks.Configure a server and/or application to use one-way or two-way HTTPS.Apply application-level cryptography where necessary.Store sensitive information securely, hash user passwords, and understand the importance of salting and of using slow hashing algorithms and processes, to maximize the safety of stored credentials.Secure log files and establish audit trails for especially sensitive information or actions. 
		 
This version of the course works with the Tomcat server. Our Java EE courses are available in variants that support various server products, including Tomcat, GlassFish, JBoss, and WebLogic.
		Java Training   Course duration 
 4 Days
 
 Java Training   Course outline
 
 Chapter 1. Concerns for Web Applications
 
Chapter 2. Authentication and AuthorizationThreats and Attack VectorsServer, Network, and Browser VulnerabilitiesSecure Design PrinciplesGET vs. POSTContainer Authentication and AuthorizationHTML FormsPrivacy Under /WEB-INFHTTP and HTTPSOther Cryptographic PracticesSOA and Web ServicesThe OWASP Top 10 
Chapter 3. Common Web AttacksHTTP BASIC and DIGEST Authentication SchemesDeclaring Security ConstraintsUser AccountsSafeguarding Credentials in TransitReplay AttacksAuthorization Over URL PatternsRolesFORM AuthenticationLogin Form DesignSession FixationProtectionsProgrammatic SecurityProgrammatic Security in JSF 
Chapter 4. Input ValidationForceful BrowsingPredictable Resource LocationsUsing Random NumbersCross-Site ScriptingOutput EscapingCross-Site Request ForgerySynchronizer TokensInjection AttacksProtections in JDBC and JPASession ManagementTaking Care of Cookies 
Chapter 5. HTTPS and CertificatesValidating User InputValidation PracticesRegular ExpressionsBean Validation (a/k/a JSR-303)Constraint AnnotationsCross-Field ValidationBuilt-In Support in Java EEUsing a ValidatorProducing Error ResponsesJSF Validation 
Chapter 6. Application-Level CryptographyDigital CryptographyEncryptionSSL and Secure Key ExchangeHashingSignatureKeystoreskeytoolWhy Keys Aren't EnoughX.509 CertificatesCertificate AuthoritiesObtaining a Signed CertificateConfiguring HTTPSClient-Side Certificates and Two-Way SSLPKCS #12 and Trust StoresCLIENT-CERT Authentication 
Chapter 7. Secure Development PracticesThe Java Cryptography ArchitectureSecure Random Number GenerationThe KeyStore APIDigital SignatureHashingPassword HashingWhy Hashing Isn't EnoughSaltsKey Lengthening and Key StrengtheningSlow AlgorithmsThe Java Cryptography ExtensionsThe SecretKey and KeyGenerator TypesSymmetric EncryptionChoosing Algorithms and Key SizesDangerous PracticesStoring and Managing Keys 
Appendix A. Learning ResourcesSecure Development CyclePenetration TestingSecure Code ReviewError Handling and Information LeakageFailing to a Secure ModeDesigning for FailureBack DoorsLogging PracticesAppropriate Content for LogsAuditing Strategies 
 System Requirements
 
 
 
| Hardware Requirements (Minimum) | Core i5, 1.8 GHz, 4 gig RAM, 1 gig disk space. |  
| Hardware Requirements (Recommended) | Core i5, 2.5 GHz GHz, 8 gig RAM, 1 gig disk space. |  
| Operating System | Tested on Windows 7 and 8, Mac OS 10.8.  Most exercises are fully portable over operating systems, web servers, and major web browsers. The demonstration of HTTPS-configuration in Chapter 5 focuses on Internet Explorer 10 and Tomcat 8, with brief notes on configuration for other browsers. Browsers continue to evolve rapidly -- especially where security is concerned -- and other configurations desired in the classroom should be tested by the instructor prior to class time. |  
| Network and Security | Limited privileges required |  
| Software Requirements | All free downloadable tools. |  
 
 |