Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/10/2016, 03:04
rafaxusirati
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 13 años, 9 meses
Puntos: 4
Trigger que restrinja el acceso por Ip

¿cómo generar un Trigger que restrinja el acceso por Ip?

Tengo una BD con una tabla llamada contactos.

Que almacena unos datos en sus diferentes columnas:

- nombre, fecha, titulo, comentario, categoria_anuncio, ip

Tengo una columna llamada ip que almacena todas las ip de los clientes.

Una persona, con una ip determinada me introduce datos, y quiero denegarle el acceso a la tabla.


No tengo muchos conocimientos en Trigger, pero navegando encontré este código, y me gustaría saber si lo puedo aprovechar.
¿cómo quedaría el Trigger sabiendo que mi BD se llama contactos y la columna a denegar el acceso "ip"?


Tengo el siguiente ejemplo, pero no consigo relacionarlo con mis campos
Código SQL:
Ver original
  1. CREATE TRIGGER AllowLocalOnly
  2. ON ALL SERVER
  3. FOR LOGON
  4. AS
  5. BEGIN
  6.     DECLARE @IP VARCHAR(500)
  7.     SET @IP = EVENTDATA().VALUE('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(500)')
  8.     IF @IP IN ('154.70.110.188', '154.70.110.188')
  9.     BEGIN
  10.         Print '<span id="IL_AD10" class="IL_AD">Capture</span> tu IP ' + @IP
  11.         ROLLBACK TRANSACTION
  12.     END
  13. END
  14. GO

o algo así

Código MySQL:
Ver original
  1. delimiter |
  2. CREATE TRIGGER deleteip
  3.      DELETE FROM contactos WHERE ip = 000.000.000.00;
  4.   END;
  5. |
  6.  
  7. delimiter ;


pruebo realizando trigger con esta sentencia, filtrándome yo también, pero los datos se introducen en la BD y no me filtra mi "ip"

Código SQL:
Ver original
  1. DELETE FROM contactos WHERE ip = '154.70.110.188' AND '12.345.678.90'


¿algún ejemplo válido que me evite que ciertas "ip" puedan ingresar datos en la BD?


una vez modificado, ¿cómo lo activo, desde dónde lo ejecuto en Mysql?

¿lo copio y lo pego en "definición" desde disparadores poniendo un tiempo "before"?

o lo lanzo desde la pestaña SQL


Otra opción que no descarto, es hacer un trigger que me cambie la categoría del anuncio a "borrado", de esta manera, aunque permanezca en la BD, no se mostrará por el navegador.

Me funciona correctamente si lo lanzo desde SQL. pero si lo quiero hacer trigger para automatizarlo, no funciona.

Código SQL:
Ver original
  1. UPDATE contactos SET categoria_anuncio = 'borrado' WHERE ip = '12.345.678.90'




Muchas gracias

Última edición por rafaxusirati; 19/10/2016 a las 07:04