2015-10-19 22 views
5

JAX-RS isteklerini CSRF karşı korumak gerekiyor mu?JRX-RS taleplerini CSRF'ye karşı korumak gerekli mi?

definition ile REST durumsuzdur ve bu nedenle oturum kimliği yoktur (oturum çerezi), çünkü hiç oturum yoktur (ayrıca bkz. https://stackoverflow.com/a/15746639/5277820).

Benim Bahar Güvenlik Java Yapılandırma: Stateless Spring Security Part 1: Stateless CSRF protection:

@Configuration 
@EnableWebSecurity 
public class SecurityConfig { 

    @Configuration 
    @Order(1) 
    public static class JaxRsWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter { 

     @Override 
     protected void configure(final HttpSecurity http) throws Exception { 
      http 
       .antMatcher("/services/**") 
       .csrf().disable() 
       .authorizeRequests() 
        .antMatchers(HttpMethod.OPTIONS, "/services/**").permitAll()    
        .anyRequest().hasAuthority("ROLE_user") 
        .and() 
       .httpBasic() 
        .and() 
       .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); 
      } 
     } 
    } 
} 

Ama blogda Aşağıdaki örnekte bulundu. Ne yazık ki blog, neden CSRF korumasına ihtiyaç duyduğunu açıklamıyor.

oturum çerezinin olmadan başka CSRF saldırısı var mı?

+0

yalnızca sitenizin web tarayıcıları tarafından kullanılırsa CSRF'e onları korumak gerekir. Eğer sadece curl tarafından kullanılıyorsa, o zaman CSRF –

cevap

2

CSRF saldırıları var olmaya bir oturumu gerekmez. Bir CSRF saldırısı, kullanıcının bir bağlantıyı tıklatması veya kullanıcının oturum açtığı bir uygulamaya giden bir formu göndermesi yoluyla bir kullanıcının adına bir şey yapmasını içerir.

Temel kimlik doğrulaması veya oturum çerezi kullanılıp kullanılmayacağı. kullanıcının alakasız olduğunu tespit edin. bir çerez kullanarak uygulama vatansız olmadığı anlamına gelmez

Not. Temel kimlik doğrulama gibi bir çerez, her bir HTTP isteğiyle ek bir başlık göndermekten ibarettir.

+0

Teşekkürler. [Temel Kimlik Doğrulama Planı] (https://en.wikipedia.org/wiki/Basic_access_authentication) için buldum içinde ilgili kısmı [RFC 2617] (https://tools.ietf.org/html/rfc2617#page-5) : "bir müşteri tüm yolları istek-URI yolu alanında son sembolik eleman veya derinliğinden daha derin de akım meydan temel bölge değeri tarafından belirtilen koruma alanı içinde olduğunu kabul GEREKEN.Bir istemci MAYIS karşılık gelen Yetkilendirme üstbilgisini 'daki kaynaklara yönelik istekleri sunucudan başka bir sorunla karşılaşmadan o alana gönderir. – dur

0

Erişim belirticileri bazen (yalnızca güvenli en iyi) çerezde saklanır, böylece istemcilerin her istekte eklemeye gerek duymaması için el ile: çerezler otomatik olarak tarayıcıların isteklerine eklenir. Bu, CSRF korumasının uygulanmasının gerekmesinin bir nedenidir.

istemcileri oluşturmak ve Cookie ve oldukça akıllı özel bir HTTP başlığında, hem de aynı eşsiz gizli değeri göndermek zorunda Bağlı makale önermektedir: Bir web sitesi düşünüldüğünde

girmeyecektir kendi etki alanı için bir Çerez okumak/yazmak için, yalnızca gerçek site başlıklarında aynı değeri gönderebilir. (... ve sunucu GET aracılığıyla kolları) Örneğin http://yourserver.com/admin/deleteAll hedefleyen sahte görüntü ile bir e-posta alırsanız, bir

, gizli istek başlığında ayarlanmaz benzersiz (eski bir çerezde hala mevcut olabilir): sunucu isteği reddetmelidir.

+0

hakkında endişelenmenize gerek yok, biliyorum ki bu çerezler tarayıcıların isteklerine otomatik olarak eklenir, ancak ben bilmiyordum, yetkilendirme başlığı da otomatik olarak eklenir. tarayıcı Sonuncusu, aslında, vatansız (ve çerezsiz) JAX-RS talepleriyle ilgili bir sorundur. – dur