Bueno, puedo entender tu preocupación y te ayudaré con lo mismo.
por favor no le pague al pirata informático, si usted le paga, él puede hacer que sea un hábito exigirlo, o otro pirata informático puede hacer lo mismo.
Aquí estoy elobrando cómo puedes acortar el problema.
- ¿Qué daño está haciendo el comercio electrónico al mercado?
- ¿Es necesario crear copias de seguridad para el sitio web de comercio electrónico?
- ¿Cuál es el razonamiento detrás de la decisión SCOTUS de 1992 en Quill Corp. vs. North Dakota, que prohíbe a los estados obligar a las corporaciones fuera del estado a recaudar impuestos sobre las ventas / uso?
- ¿Cuál es el mejor sitio de compras en línea para grandes ofertas y descuentos en India?
- ¿Qué papeleo está involucrado en comenzar un negocio minorista en línea en India?
alguien hackeó tu sitio web, significa que es vulnerable.
su sitio web no es estático o dinámico.
Hacker acaba de hackear su sitio web o lo ha dañado o robado sus datos?
En primer lugar, escanee su sitio web en busca de vulnerabilidades. Las vulnerabilidades más comunes son sqli, xss, dnn, sqli string base vulnrelbilty, rfi, lfi, etc.
puede usar la herramienta Acunetix WVS para escanear su sitio web.
Compruebe su sitio web si el hacker todavía tiene acceso.
compruebe si hay algún shell php cargado. Hay un shell php llamado “404”. Cuando lo abra, es posible que vea un mensaje que indica que no se encontró la página. Para identificarlo, abra la página y presione ctrl + a. Ahora debes ver un texto aria. Si lo encuentra, vaya a su panel de control, elimine el archivo.
Shell es como una puerta trasera para un pirata informático, si el sitio web está protegido, el pirata informático puede acceder, eliminar, editar o agregar cualquier información en su sitio web, sin importar que haya cambiado su contraseña de cpanel o la URL.
Actualiza tus códigos, scripts.
Si la entrada del usuario se inserta sin modificación en una consulta SQL, la aplicación se vuelve vulnerable a la inyección SQL, consulte el siguiente script:
$ unsafe_variable = $ _POST
[‘entrada del usuario’];
mysql_query (“INSERT INTO` table`
(`columna`) VALORES
(‘$ unsafe_variable’) “);
Eso es porque el usuario puede inyectar cualquier dato
valor similar ‘); Tabla DROP TABLE; – y
la consulta se convierte en:
INSERTAR EN `tabla` (` columna`)
VALORES (‘valor’); MESA PLEGABLE
mesa;-‘)
el desarrollador puede evitar la vulnerabilidad anterior con una simple actualización en la base de datos sqli:
Estas son declaraciones SQL que se envían
hacia y analizado por el servidor de base de datos por separado de cualquier parámetro. De esta manera, es imposible que un hacker inyecte SQL malicioso.
Hay 2 formas de lograr esto:
1. Usando PDO (para cualquier unidad de base de datos compatible
$ stmt = $ pdo-> prepare (‘SELECCIONAR *
empleados DONDE nombre =: nombre ‘);
$ stmt-> execute (array (‘nombre’ =>
$ nombre));
foreach ($ stmt como $ row) {
// hacer algo con $ row
}
2. Usando MySQLi (para MySQL):
$ stmt = $ dbConnection-> prepare
(‘SELECCIONAR * DE los empleados DONDE n
=? ‘);
$ stmt-> bind_param (‘s’, $ nombre);
$ stmt-> execute ();
$ resultado = $ stmt-> get_result ();
while ($ row = $ result-> fetch_ass
()) {
// hacer algo con $ row
}
Si está utilizando una base de datos que no sea
MySQL, hay una segunda opción específica del controlador a la que puede referirse (por ejemplo, pg_prepare () y
pg_execute () para PostgreSQL). PDO es el
opción universal. Configuración correcta de la conexión Tenga en cuenta que cuando se usa PDO para acceder a una base de datos MySQL, las declaraciones preparadas reales no se usan por defecto. Para solucionar esto, debe deshabilitar la emulación de las declaraciones preparadas. Ejemplo de
crear una conexión usando PDO es:
$ dbConnection = nueva PDO
(‘mysql: dbname = dbtest; host = 127.0.0.1
‘contraseña de usuario’);
$ dbConnection-> setAttribute
(DOP :: ATTR_EMULATE_PREPARES, falso);
$ dbConnection-> setAttribute
(DOP :: ATTR_ERRMODE,
PDO :: ERRMODE_EXCEPTION);
En el ejemplo anterior, el modo de error no es
estrictamente necesario, pero se recomienda agregarlo. De esta manera, el script no se detendrá con un error fatal cuando algo salga mal. Y le da al desarrollador la oportunidad de detectar cualquier error que se arroje como PDOExceptions.
Sin embargo, lo que es obligatorio es el primero.
línea setAttribute (), que le dice a PDO que
deshabilite las declaraciones preparadas emuladas y use declaraciones preparadas reales. Se asegura de que PHP no analice la declaración y los valores antes de enviarlos al servidor MySQL (dando un
posible hacker no tiene posibilidad de inyectar SQL malicioso).
Sin embargo, puede establecer el conjunto de caracteres en las opciones del constructor, es importante tener en cuenta que las versiones ‘antiguas’ de PHP (<5.3.6) ignoraron en silencio el parámetro de conjunto de caracteres en el DSN. Explicación Lo que sucede es que el servidor de la base de datos analiza y compila la instrucción SQL que pasa para prepararla. Especificando parámetros
(ya sea un? o un parámetro con nombre como: nombre en el ejemplo anterior) el desarrollador da el comando al motor de la base de datos donde desea filtrar. Entonces cuando llamas
ejecutar, la declaración preparada se combina con los valores de los parámetros que especifique. Lo importante aquí es que los valores de los parámetros se combinan con la declaración compilada, no con una cadena SQL. La inyección de SQL funciona engañando al script para que incluya cadenas maliciosas cuando crea SQL para enviar a la base de datos. Entonces, al enviar el SQL real por separado de los parámetros, limita el riesgo de terminar con algo que no tenía la intención.
Cualquier parámetro que envíe al usar una declaración preparada solo se tratará como cadenas
(sin embargo, el motor de la base de datos puede hacer algo de optimización, por lo que los parámetros también pueden terminar como números, por supuesto). En el ejemplo anterior, si la variable $ name contiene ‘Sarah’;
ELIMINAR DE los estudiantes el resultado sería
simplemente sea una búsqueda de la cadena “‘Sarah’;
BORRAR DE estudiantes “, y no
terminar con una mesa vacía. Otro beneficio con el uso de declaraciones preparadas es que si ejecuta la misma declaración más veces en la misma sesión, solo se analizará y compilará una vez, lo que le dará algunas ganancias de velocidad.
preguntaste sobre cómo hacerlo
un inserto, aquí hay un ejemplo (usando PDO):
$ readyStatement = $ db-> prepare
(‘INSERTAR EN LA tabla (columna) VALORES
(:columna)’);
$ readyStatement-> execute (array
(‘column’ => $ unsafeValue));
¿Se pueden utilizar las declaraciones preparadas para
Consultas dinámicas?
Si bien el desarrollador aún puede usar declaraciones preparadas para los parámetros de la consulta, la estructura de la consulta dinámica en sí no se puede parametrizar y ciertas funciones de consulta no se pueden parametrizar.
Para estos escenarios específicos, la mejor acción a tomar es usar un filtro de lista blanca que restrinja lo posible
valores.
// Lista blanca de valores
// $ dir solo puede ser ‘DESC’ o ‘ASC
$ dir =! empty ($ dirección)?
‘DESC’: ‘ASC’ ;.
Si no tiene el control sobre el desarrollo del sitio web, será difícil para usted.
Mejor, llame a un experto para solucionar su problema.
Si no tiene suficiente dinero para contratar a un experto, búsqueme en Facebook, lo ayudaré a solucionar sus problemas.
Espero haberte ayudado.
cualquier duda no dude en preguntar!