Désactiver les méthodes HTTP PUT et DELETE est une pratique courante lorsque l’on souhaite sécuriser une application web en empêchant certaines opérations de modification de ressources. Voici quelques exemples et méthodes pour désactiver ces méthodes dans différents serveurs web et frameworks, accompagnés de sources fiables pour plus de détails.
Apache est un serveur web très utilisé. Pour désactiver les méthodes PUT et DELETE, vous pouvez éditer le fichier de configuration d’Apache (généralement « httpd.conf » ou un fichier inclus dans « sites-available » ou « sites-enabled »).
Exemple de configuration :
```
```
Dans cet exemple, le bloc `
Source : [Apache Module mod_access_compat](https://httpd.apache.org/docs/2.4/mod/mod_access_compat.html#limit)
Nginx, un autre serveur web populaire, utilise une approche différente. Pour désactiver des méthodes spécifiques, il faut écrire une configuration personnalisée dans le fichier de configuration Nginx (souvent « nginx.conf » ou un fichier de configuration spécifique à un site).
Exemple de configuration :
```
server {
location / {
if ($request_method ~* “(PUT|DELETE)”) {
return 405;
}
}
}
```
Dans cet exemple, la directive `if` est utilisée pour vérifier la méthode HTTP et la directive `return 405` renvoie une réponse HTTP 405 Method Not Allowed.
Source : [Nginx Documentation on if](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#if)
Pour les applications développées en utilisant le framework Spring Boot, on peut configurer un filtre pour intercepter les requêtes HTTP et bloquer certaines méthodes.
Exemple de code Java :
```
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class HttpMethodFilter extends HttpFilter {
@Override protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { String method = request.getMethod(); if (“PUT”.equalsIgnoreCase(method) || “DELETE”.equalsIgnoreCase(method)) { response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, “Method Not Allowed”); return; } chain.doFilter(request, response); } @Override public void init(FilterConfig filterConfig) throws ServletException { // Initialisation si nécessaire } @Override public void destroy() { // Cleanup si nécessaire } } ```Puis, enregistrer ce filtre dans votre classe principale Spring Boot :
```
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class DemoApplication {
Source : [Spring Boot Documentation](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/)
- OWASP : L’Open Web Application Security Project (OWASP) offre des recommandations sur la sécurisation des applications web, y compris des informations sur le contrôle et la restriction des méthodes HTTP. [OWASP Secure Headers Project](https://owasp.org/www-project-secure-headers/)
- Mozilla Developer Network (MDN) : La documentation MDN fournit un guide complet sur les méthodes HTTP et leurs utilisations, ainsi que des recommandations de sécurité. [MDN HTTP Methods](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)
En suivant ces pratiques et en se référant aux sources mentionnées, on peut désactiver en toute sécurité les méthodes HTTP PUT et DELETE pour protéger les applications web contre les modifications non autorisées.