He creado (usando a script y algo de ayuda de Stack y algo de ayuda de amigos, sé muy poco acerca de PHP) una página simple para una publicación local sin fines de lucro donde las personas pueden cargar fotos.¿Cómo puedo proteger un script de carga de imágenes PHP de exploits?
no estoy muy bien con la seguridad (de una base de la ignorancia, no negligencia deliberada), pero me he tomado las siguientes medidas para proteger a esta página:
• el script PHP está configurado para aceptar solamente .jpg , archivos .png y .tif para cargar;
• la subcarpeta a la que guarda el contenido del formulario tiene permisos establecidos en 700, y la subcarpeta a la que guarda las fotos cargadas tiene permisos establecidos en 700;
• según la documentación, mi anfitrión tiene la siguiente configuración para asegurar que sólo los archivos .php ejecutan como .php:
<FilesMatch \.php$>
SetHandler php52-fcgi
</FilesMatch>
• He puesto un archivo .htaccess en el correspondiente (principal y se guarda el contenido) carpetas:
RemoveHandler .php
RemoveHandler .inc
RemoveHandler .pl
RemoveHandler .cgi
RemoveHandler .py
RemoveHandler .fcgi
noche a la mañana, sin embargo, alguien encontraron esta página de prueba y presentaron lo que parece ser un mensaje de prueba perfectamente benignas y pequeña .jpg. Esta es una página de prueba privada con una URL no intuitiva que solo yo y otras tres personas conocemos; ninguno de los otros envió esta prueba.
Esto, obviamente, me tiene preocupado de que esté ocurriendo algo raro, y me preocupa no saber lo suficiente sobre seguridad para asegurarme de que esta página es segura.
¿Hay algo obvio que me falta?
el nombre de archivo proporcionado por el usuario (en '$ _FILES ['upload'] ['name']') no es confiable y se puede cambiar fácilmente. No verifique estas extensiones Compruebe el tipo de mime si comprueba si 'getimagesize()' devuelve un resultado válido. Si es posible, genera tu propio nombre de archivo. – MarcDefiant