La seguridad con .htaccess
Muchos especialistas recomienda el uso del archivo .htaccess para protegerse frente a ciertos ataques básicos.
Protege archivos
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
Otra posibilidad :
<Files ~ "^.*.([Hh][Tt][Aa])">
Order allow,deny
Deny from all
</Files>
Es el mismo para el archivo .DS_Store (macOS) :
<Files ~ "\.DS_Store$">
Order allow,deny
Deny from all
</Files>
Deshabilitar la exploración de directorios
Options All -Indexes
Prohíbe el Hotlinking
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?mi-sitio-web.es/.*$ [NC]
RewriteRule \.(jpe?g|png|gif|bmp|webp) https://i.imgur.com/i85uvCt.gif [R,L]
</ifModule>
Bloquear IP spam
<Limit GET POST>
Order allow,deny
Deny from 65.21.103.69
Deny from 223.240.52.20
Allow from all
</Limit>
Personalizar páginas de error
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
ErrorDocument 403 /403.html
Evitar solicitudes maliciosas (COND)
<ifModule mod_rewrite.c>
RewriteEngine On
# base64 hacking
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# mosConfig hacking
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# XSS <script>
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# GLOBALS hacking
RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR]
# _REQUEST hacking
RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})
# Redirecciones
RewriteRule ^(.*)$ index.php [F,L]
</ifModule>
0 indicio
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^secret\.php$ - [R=404]
</ifModule>