El lema de Perl es “Hay más de una forma de hacerlo”. Desafortunadamente, ese poder y flexibilidad necesita un subtítulo: “pero solo algunas formas CORRECTAS”. Como ejemplo, cuando necesita insertar un valor en una base de datos, puede escribir algo como
my $ instrucción = ‘insertar en valores de my_table (col1, col2) (?,?)’;
my $ sth = $ dbh-> prepare ($ extracto, $ val1, $ val2);
$ sth-> execute ();
Pero eso es feo, y toma tres declaraciones para hacer una tarea relativamente simple. Perl también te permite escribir algo como
- Cómo atraer clientes para una empresa de seguridad cibernética que quiero crear
- ¿Qué son los hackers?
- ¿Cuáles son las ventajas del monitoreo de seguridad de red?
- En vista de sus muchos inconvenientes, ¿cómo podría la seguridad biométrica ("lo que eres") convertirse en un método útil y seguro para el control de acceso?
- ¿Cuál es el papel del aprendizaje automático en la seguridad cibernética o la seguridad de las redes?
$ dbh-> execute (“insertar en los valores de my_table (col1, col2) ($ val1, $ val2)”);
Parece que hace lo mismo, solo se necesita una declaración para ejecutarse, y se va a la siguiente parte de lo que sea que esté trabajando, ¿verdad?
Incorrecto.
Por casi cualquier valor que le arrojes, ambas piezas de código harán exactamente lo mismo. El segundo incluso puede ser un poco más eficiente en algunas circunstancias, y definitivamente es más rápido escribir. Desafortunadamente, el segundo tiene un defecto no inmediatamente obvio cuando se le pasan ciertos valores. Por ejemplo, si
$ var2 = ‘); truncar tabla my_table; ‘;
y ejecuta la primera pieza, obtendrá un error o col2 contendrá el valor que ingresó en $ var2 (dependiendo del tipo de datos de col2). Si ejecuta el segundo código, acaba de perder todo en esa tabla en la base de datos. Espero que tengas buenas copias de seguridad! Ese problema particular se llama “ataque de inyección SQL”, y es uno de los ataques más comunes utilizados para eliminar sitios web. El primer método, utilizando declaraciones preparadas, desinfecta su entrada para que sus datos permanezcan seguros. El segundo método es más fácil de recordar y más rápido de escribir, pero no proporciona absolutamente ninguna protección contra entradas maliciosas.
EDITAR: Esta respuesta me hace sonar como un enemigo de Perl. No soy; Uso Perl casi todos los días, tanto profesionalmente como en mis proyectos personales. Puede ser uno de los idiomas más potentes disponibles y tiene una biblioteca de código preexistente masiva (busque casi cualquier problema que desee resolver o cualquier servicio con el que desee interactuar, en CPAN y estoy seguro de que ‘ daré una respuesta). Si conoce las posibles dificultades, el código escrito en Perl puede ser tan seguro como en cualquier otro idioma, pero debe vigilar dónde pisa.