5. Sicher in die Cloud mit Angular 2 und Spring
Boot
5
Java
Entwickler vs. Security
6. Identity Server
Sicher in die Cloud mit Angular 2 und Spring
Boot
6
Angular 2
API Gateway
Microservice
HTTPS
Microservice
HTTPS
HTTPS HTTPS
DB
DB
JDBC
JDBC
Architektur / Threat Model
HTTPS
7. Sicher in die Cloud mit Angular 2 und Spring
Boot
7
Angular 2
https://angular.io
8. Sicher in die Cloud mit Angular 2 und Spring
Boot
8
https://angularjs.blogspot.de/2016/09/angular-16-expression-sandbox-removal.html
Angular 1.x
Angular 2
9. Sicher in die Cloud mit Angular 2 und Spring
Boot
9
https://github.com/angular/angular/issues/8511
10. Sicher in die Cloud mit Angular 2 und Spring
Boot
10
Sicherheitseinstufung in Angular 2
Alle Werte (Alles was ins DOM wandert)
Angular Templates (Vorsicht: Template-Injection)
Kontextabhängige Sanitization und Escaping
HTML (z.B. Bindings mit „innerHtml“)
Style (CSS Bindings)
URL (URL Eigenschaften wie <a href>
Resource URL (z.B. <image src> oder <script src>)
11. Sicher in die Cloud mit Angular 2 und Spring
Boot
11
https://angular.io/docs/ts/latest/api/platform-browser/index/DomSanitizer-class.html
12. Sicher in die Cloud mit Angular 2 und Spring
Boot
12
„Double Submit Cookie“ Support in Angular 2
XSRF-TOKEN Cookie
Client Server
X-XSRF-TOKEN Header +
XSRF-TOKEN Cookie
CSRF Schutz
13. Sicher in die Cloud mit Angular 2 und Spring
Boot
13
Backendhttps://spring.io/platform
14. Sicher in die Cloud mit Angular 2 und Spring
Boot
14
Spring Boot
Spring Security
Spring Data JPA
Spring Framework
15. Sicher in die Cloud mit Angular 2 und Spring
Boot
15
Demo: Eine sichere Web-Anwendung in 5 Minuten
16. Sicher in die Cloud mit Angular 2 und Spring
Boot
16
Authentifizierung aller URLs
Session Fixation Schutz
Session Cookie (HttpOnly, Secure)
CSRF Angriffschutz
Security Response Header
„Secure By Default“ Konfiguration
17. Sicher in die Cloud mit Angular 2 und Spring
Boot
17
@Configuration
public class WebSecurityConfiguration extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
…
http
.csrf().csrfTokenRepository(
CookieCsrfTokenRepository.withHttpOnlyFalse()
);
}
CSRF Konfiguration für Angular 2
18. Sicher in die Cloud mit Angular 2 und Spring
Boot
18
public interface PasswordEncoder {
String encode(CharSequence rawPassword);
boolean matches(
CharSequence rawPassword,
String encodedPassword);
}
Sichere Passwortverschlüsselung
19. Sicher in die Cloud mit Angular 2 und Spring
Boot
19
Sichere Passwortverschlüsselung
Encoder Implementierungen:
BCryptPasswordEncoder
SCryptPasswordEncoder
Pbkdf2PasswordEncoder
BytesEncryptor (BouncyCastle)
20. Sicher in die Cloud mit Angular 2 und Spring
Boot
20
Authorization
Server
Client
Resource
Server
OAuth2 = Autorisierung
https://oauth.net/2
21. Sicher in die Cloud mit Angular 2 und Spring
Boot
21
OpenID Connect = Authentifizierung
https://openid.net/connect
OAuth 2
JWT JWS JWE
OpenID Connect
JWK
22. Sicher in die Cloud mit Angular 2 und Spring
Boot
22
Tweetable OAuth2 Application
23. Sicher in die Cloud mit Angular 2 und Spring
Boot
23
https://github.com/IdentityServer/IdentityServer3
24. Sicher in die Cloud mit Angular 2 und Spring
Boot
24
@Entity
public class Person extends AbstractPersistable<Long> {
@NotNull
@Pattern(regexp = "^[A-Za-z0-9- ]{1,30}$")
private String lastName;
@NotNull
@Enumerated(EnumType.STRING)
private GenderEnum gender;
...
}
Input Validierung
Typisierung und Bean Validation
(REST Interface UND in JPA Entity)
25. Sicher in die Cloud mit Angular 2 und Spring
Boot
25
@Query(
"select u from User u where u.username = "
+ " :username and u.password = :password"
)
User findByUsernameAndPassword(
@Param("username") String username,
@Param("password") String password);
SQL Injection Schutz
Prepared Statements mit Spring Data JPA
26. Sicher in die Cloud mit Angular 2 und Spring
Boot
26
public class UserBoundaryService {
@PreAuthorize("hasRole('ADMIN')")
public List<User> findAllUsers() {…}
}
-------------------------------------
public class TaskBoundaryService {
@PreAuthorize("hasPermission(#task.getProject().getId(),
@permissionTargetType.PROJECT, @accessType.WRITE)")
public Task createTask(Task task) {…}
}
Autorisierung der REST API
Rollen- oder Rechtebasiert
27. Sicher in die Cloud mit Angular 2 und Spring
Boot
27
public class AuthorizationIntegrationTest {
@WithMockUser(roles = "ADMIN")
@Test
public void verifyFindAllUsersIsAuthorized() {…}
@WithMockUser(roles = "USER")
@Test(expected = AccessDeniedException.class)
public void verifyFindAllUsersIsUnauthorized() {…}
…
}
Test der REST API
Serverseitige Tests (mit Security)
28. Sicher in die Cloud mit Angular 2 und Spring
Boot
28
Cloud Plattformhttps://www.cloudfoundry.org/
29. Sicher in die Cloud mit Angular 2 und Spring
Boot
29
Rotate
Repair
Repave
https://www.youtube.com/watch?v=NUXpz0Dni50
Justin Smith, Pivotal
30. Sicher in die Cloud mit Angular 2 und Spring
Boot
30
What if every server inside my data center had a
maximum lifetime of two hours?
This approach would frustrate malware writers,
because it limits the amount of time to exploit
known vulnerabilities before they are patched.
“
“Justin Smith, Pivotal
Repave
31. Sicher in die Cloud mit Angular 2 und Spring
Boot
31
Rotate
Microservice
DB
JDBC
Service Binding
Credentials
32. Sicher in die Cloud mit Angular 2 und Spring
Boot
32
Repair
Spring Boot + Spring Platform
CloudFoundry Java Buildpack
CloudFoundry OPS Manager
AWS Azure OpenStack
33. Sicher in die Cloud mit Angular 2 und Spring
Boot
33
Verify for Security
Early and Often
Parameterize Queries
Encode Data
Validate All Inputs
DevOps / Code Reviews
Spring Data JPA
Angular 2 Kontext-Sanitizer
Typisierte Eingaben /
Bean Validation
Summary (1)
https://www.owasp.org/index.php/OWASP_Proactive_Controls
34. Sicher in die Cloud mit Angular 2 und Spring
Boot
34
Implement Identity and
Authentication Controls
Implement Access Controls
Protect Data
OAuth2 + OpenID Connect
Summary (2)
https://www.owasp.org/index.php/OWASP_Proactive_Controls
Spring Security
Autorisierung
Spring Security Password
Encoder
35. Sicher in die Cloud mit Angular 2 und Spring
Boot
35
Implement Logging and
Intrusion Detection
Leverage Security Frameworks
and Libraries
Error and Exception Handling
Spring Error Controller
Java Exception Handling
Slf4J Logger, Splunk,
Auditing, (AppSensor)
Spring Security
Spring Boot + Spring Platform
Summary (3)
https://www.owasp.org/index.php/OWASP_Proactive_Controls