Cómo hacer que el sitio web PHP sea más seguro

Cuando se trata de la seguridad de las aplicaciones, además de proteger su hardware y plataforma, también debe escribir su código de forma segura. Estos son los mejores hábitos que un programador puede desarrollar para proteger su aplicación del ataque:

Validación de datos de entrada : mientras diseña su aplicación, debe esforzarse por proteger su aplicación contra entradas incorrectas. No confíes en la entrada del usuario. Aunque su aplicación está destinada a buenas personas, siempre existe la posibilidad de que algún usuario malo intente atacar su aplicación ingresando una entrada incorrecta. Si siempre valida y filtra los datos entrantes, puede crear una aplicación segura. Valide siempre los datos en su código PHP. Si está utilizando JavaScript para validar la entrada del usuario, siempre existe la posibilidad de que el usuario haya desactivado JavaScript en su navegador. En este caso, su aplicación no podrá validar la entrada. Validar en JavaScript está bien, pero para protegerse contra este tipo de problemas, también debe volver a validar los datos en PHP.

Protección contra ataques XSS: el ataque de secuencias de comandos entre sitios (ataque XSS) es un ataque basado en la inyección de código en páginas web vulnerables. El peligro es el resultado de aceptar datos de entrada no verificados y mostrarlos en el navegador.

Prevención de ataques de inyección SQL

Para realizar las consultas de su base de datos, debe usar PDO. Con consultas parametrizadas y declaraciones preparadas, puede evitar la inyección de SQL.

Eche un vistazo al siguiente ejemplo:

<? php
$ sql = “SELECCIONAR * DE usuarios DONDE nombre =: nombre y edad =: edad”;
$ stmt = $ db-> prepare ($ sql);
$ stmt-> execute (array (“: name” => $ name, “: age” => $ age));

En el código anterior proporcionamos los parámetros con :name y :age to prepare() , que informa al motor de la base de datos para precompilar la consulta y adjuntar los valores a los parámetros con nombre más adelante. Cuando se realiza la llamada a execute() , la consulta se ejecuta con los valores reales de los parámetros nombrados. Si codifica de esta manera, el atacante no puede inyectar SQL malicioso ya que la consulta ya está compilada y su base de datos estará segura.

Protegiendo el sistema de archivos

Como desarrollador, siempre debe escribir su código de tal manera que ninguna de sus operaciones ponga en riesgo su sistema de archivos. Considere el siguiente PHP que descarga un archivo de acuerdo con un parámetro proporcionado por el usuario:

<? php
if (isset ($ _ GET [‘nombre de archivo’]) {
$ filename = $ _GET [‘nombre de archivo’];
encabezado (‘Content-Type: application / x-octet-stream’);
encabezado (‘Codificación de transferencia de contenido: binario’);
header (‘Content-Disposition: adjunto; filename = “‘. $ filename. ‘”;’);
echo file_get_contents ($ nombre de archivo);
}

El script es muy peligroso ya que puede servir archivos desde cualquier directorio al que pueda acceder, como el directorio de sesión y los directorios del sistema. La solución es asegurarse de que el script no intente acceder a archivos desde directorios arbitrarios.

Protección de datos de sesión

Por defecto, la información de la sesión se escribe en un directorio temporal. En el caso de un servidor de alojamiento compartido, alguien que no sea usted puede escribir un script y leer los datos de la sesión fácilmente. Por lo tanto, no debe guardar información confidencial como contraseñas o números de tarjetas de crédito en una sesión.

Una buena manera de proteger los datos de su sesión es cifrar la información almacenada en la sesión. Esto no resuelve el problema por completo ya que los datos cifrados no son completamente seguros, pero al menos la información no es legible. También debe considerar mantener los datos de su sesión almacenados en otro lugar, como una base de datos. PHP proporciona un método llamado session_set_save_handler() que se puede usar para conservar los datos en la sesión a su manera.

A partir de PHP 5.4, puede pasar un objeto de tipo SessionHandlerInterface a session_set_save_handler() . Consulte la documentación de PHP para obtener información sobre cómo implementar la persistencia de sesión personalizada mediante la implementación de SessionHandlerInterface .

Manejo adecuado de errores

Es bueno saber acerca de todos los errores que ocurren mientras desarrollamos una aplicación, pero cuando hacemos que la aplicación sea accesible para los usuarios finales, debemos tener cuidado de ocultar los errores. Si se muestran errores a los usuarios, puede hacer que nuestra aplicación sea vulnerable. Por lo tanto, el mejor enfoque es configurar su servidor de manera diferente para los entornos de desarrollo y producción.

En el modo de producción, debemos desactivar la configuración de display_errors y display_start_up_errors . error_reporting y log_errors deben estar log_errors para que podamos registrar errores mientras los ocultamos a los usuarios finales.

Puede usar set_error_handler para definir manejadores de errores personalizados. Sin embargo, tiene limitaciones. El controlador de errores personalizado omite el mecanismo estándar de manejo de errores de PHP. No puede detectar errores como E_CORE_ERROR , E_STRICT o E_COMPILER_ERROR en el mismo archivo en el que se define el controlador de errores. Además, no podrá manejar los errores que puedan ocurrir dentro del mismo controlador.

Para manejar los errores de manera elegante, debe realizar el manejo de excepciones a través de bloques try / catch. Las excepciones están representadas por la clase Exception y sus subclases. Si ocurre algún error dentro del bloque try, puede lanzar una excepción y procesarlo en el bloque catch.

Supongo que quiere saber “cómo desarrollar un sitio web seguro en PHP”.

La mejor solución para esto es usar framework para el desarrollo, ya que se ocupan de muchas cosas por sí mismos, como desinfectar las entradas de los usuarios, protección csrf, etc. Puede usar frameworks como CodeIgniter Web Framework o PHP Framework For Web Artisans o cualquier otro,

Si no está utilizando ningún marco, estas son las pocas cosas que debe hacer,

Para más detalles y más, vaya a Seguridad – Manual

  1. Asegúrese de desinfectar cualquier entrada del usuario.
  2. Asegúrese de validar y verificar cualquier entrada del usuario.

Seguridad del sistema de archivos

  1. Revise los archivos que sean legibles a nivel mundial para asegurarse de que sean seguros para la lectura de todos los usuarios que tienen acceso a ese sistema de archivos

Instalado como un módulo de Apache

  1. Cuando Instalado como un módulo de Apache, hereda los permisos de usuario de Apache, por lo que los permisos de usuario de Apache para root podrían ser muy peligrosos.

Ocultar PHP – Manual

  1. Ocultar php: establece expose_php en off en tu php.ini

Seguridad de la base de datos

  1. No implemente toda la lógica empresarial en la aplicación web (es decir, su secuencia de comandos), en su lugar, hágalo en el esquema de la base de datos utilizando vistas, disparadores o reglas
  2. Conexiones de base de datos, use declaraciones preparadas, intente usar PDO o mysqli para ello.
  3. Nunca se conecte a la base de datos como superusuario o como propietario de la base de datos. Utilice usuarios siempre personalizados con privilegios muy limitados.
  4. No imprima ninguna información específica de la base de datos
  5. Verifique la entrada, diga en caso de entrada numérica, verifique los datos con ctype_digit (), o cambie silenciosamente su tipo usando settype (), o use su representación numérica por sprintf ()
  6. Si la solución lo permite, use procedimientos almacenados y cursores previamente definidos para abstraer el acceso a datos para que los usuarios no accedan directamente a tablas o vistas

Usando Register_globals

  1. Deshabilite register_globals a través de Php Ini o htaccess.

PHP: Informe de errores – Manual

  1. Mientras realiza la implementación en producción, desactive los informes de errores por completo estableciendo error_reporting () en 0, o apague la pantalla de error utilizando la opción php.ini display_errors , para aislar su código de la prueba

De todos modos, intente ir a través de los enlaces anteriores y el manual de PHP e intente hacer una búsqueda en Google, encontrará muchos artículos.

Pero la mejor forma de producción es buscar algunos marcos si la solución lo permite.

Saludos,

Sambhav

1) use el informe de errores adecuado

2) deshabilita las malas características de php

if( !empty( $_POST['username'] ) && $_POST['username'] == 'test' && !empty( $_POST['password'] ) && $_POST['password'] == "test123" )

{

$access = true;

}

3) validar entrada

Valide la entrada además de los caracteres de escape, otra excelente manera de proteger la entrada es validarla.

4) Protección contra la inyección SQL

$username = mysqli_real_escape_string( $GET['username'] );

mysql_query( "SELECT * FROM tbl_members WHERE username = '".$username."'");

5) Desactivar citas mágicas:

; Citas mágicas
;

; Citas mágicas para los datos entrantes GET / POST / Cookie.
magic_quotes_gpc = Desactivado

; Comillas mágicas para datos generados en tiempo de ejecución, por ejemplo, datos de SQL, de exec (), etc.
magic_quotes_runtime = Apagado

; Use comillas mágicas estilo Sybase (escape ‘con’ ‘en lugar de \’).
magic_quotes_sybase = Desactivado

Como programador de PHP, su primera preocupación debería ser crear una aplicación web que sea segura y evitar inadvertidamente que permita la entrada de agujeros de seguridad en una aplicación web.

Para hacer que el sitio web de PHP sea más seguro, un desarrollador de PHP debe comprender los tipos básicos de fallas que cualquier aplicación de PHP tiende a exhibir. Para comprender los errores, debe tener los detalles sobre los errores comunes de programación de PHP que podría cometer y cuáles son las mejores prácticas de seguridad de PHP.

Este artículo está aquí para ayudarlo a resolver todas las fallas y fallas y para brindarle las mejores y posibles soluciones para salir de las situaciones: los 7 errores de seguridad más importantes de PHP y lo que puede hacer al respecto

Soy desarrollador de php y le sugeriré que use cualquier marco MVC para desarrollar un sitio web php más seguro

Algunos de los mejores son

Codeigniter

CakePhp

Laravel

Estas herramientas lo ayudarán a construir un sitio web rápido y seguro si aún le encanta desarrollar un sitio web seguro en el algoritmo de cifrado de uso principal de PHP y encontrar algunos fragmentos de código en GitHub.

Codificación feliz

Puede obtener más información sobre la seguridad de aplicaciones web, Pentesting, etc. Una buena forma de comenzar sería con el libro “El manual de seguridad de aplicaciones web”. También puede descargar DVWA (Damn Vulnerable Web Application) para tener una experiencia práctica en la explotación de las vulnerabilidades. Una vez que se da cuenta de las vulnerabilidades que son posibles en cualquier sitio, puede convertirse en un desarrollador de aplicaciones seguro.

Recuerda. ¡Todo esto tiene un costo, y es paciencia!

  • Scripting de sitios cruzados (XSS)
  • Inyecciones Inyección SQL. Recorrido de directorio (inyección de ruta) Inyección de comando. Código de inyección.
  • Falsificación de solicitud de sitios cruzados (XSRF / CSRF)
  • Archivos públicos.
  • Contraseñas
  • Subiendo archivos.
  • Secuestro de sesión.
  • Inclusión remota de archivos.

Para saber más con videos visite Learnvern .

es un poco difícil si desarrollaste un sitio php por principiantes o programadores con poca experiencia en php

en lugar de desarrollar un sitio web PHP con su propia codificación, puede usar marcos

como codeigniter, laravel, yii

Más:

http://www.techmyntra.co.in/

http://www.techmyntra.co.in/web-…

  • Mantenga el software actualizado. Puede parecer obvio, pero asegurarse de mantener todo el software actualizado es vital para mantener su sitio seguro. …
  • Inyección SQL.
  • XSS.
  • Error de mensajes.
  • Validación del lado del servidor / validación de formularios.
  • Contraseñas
  • Subidas de archivos.
  • HTTPS

Para saber más Visite TOPS Technologies.

Puede que no sea un experto en PHP, pero creo que estos enlaces pueden ser útiles

  1. PHP Master | 8 prácticas para asegurar su aplicación web
  2. 5 consejos útiles para crear aplicaciones PHP seguras
  3. http://php.net/manual/en/securit

Subelo en github, publique el enlace aquí. Luego pregunte cómo puedo hacer esto seguro. ¿Cómo diablos sabemos qué vulnerabilidades tienes en tu código? Si no le gusta ese consejo, vaya a leer alguna publicación de blog sobre el tema, entonces se sentirá mejor

Aclamaciones,

Rj

Como Php es conocido por sus razones de seguridad, por lo que no debe preocuparse por dicha seguridad, solo busque el mejor estilo de codificación y use bibliotecas javascript que probablemente lo ayuden en lo mismo.