Codificación segura: ¿de qué se trata?

  
 

Entonces, ¿crees que puedes codificar? Bueno, es bueno saberlo… El mundo definitivamente necesita más geeks y nerds como tú y como yo… Pero, ¿ son seguros tus programas? De esto se trata todo este artículo.

Si haces una búsqueda rápida en Google sobre Codificación Segura, el primer enlace que llamará tu atención será nuestra propia Wiki.

La codificación segura es la práctica de desarrollar software de computadora de una manera que protege contra la introducción accidental de vulnerabilidades de seguridad. Los defectos, los errores y las fallas lógicas son consistentemente la causa principal de las vulnerabilidades de software comúnmente explotadas.

¡De acuerdo! Basta de jerga… ¿Qué significa eso realmente? Dejame darte un ejemplo. Ahora, como soy un encantador de serpientes, usaré Python 2.7x…

Python3

#test_run.py
pswd ="MY PASSWORD"
not_secret ="Geeks rock!"
 
inputVal = input("Please enter number of geeks") #A VERY BAD IDEA
print ("There are", inputVal,"geeks here, chanting", not_secret)

Ahora, adelante, pruébalo… Se compila con éxito y sabes qué, ¡da el resultado deseado! Entonces, esto es lo que obtuve cuando probé diferentes entradas…
Ejecutar – 1
Ingrese el número de geeks 5 
 

            There are 5 geeks here, chanting Geeks rock!

Ejecutar – 2
          Ingrese el número de geeks dir() 
 

There are [‘pswd’, ‘not_secret’, ‘__builtins__’, ‘__doc__’, ‘__file__’,
‘__name__’, ‘__package__’] geeks here, chanting Geeks rock!

Ejecutar – 3
          Ingrese el número de geeks pswd 
 

          There are MY PASSWORD geeks here, chanting Geeks rock!

Si no te diste cuenta hasta ahora, déjame decirlo… ¡El programa funcionó perfectamente! Pero, no de la manera que queríamos… Imprimió nuestros datos secretos… Ahora, no puedes culpar al lenguaje por esto, y tampoco puedes culpar al programador… Hizo lo que se le pidió que hiciera… Esto es donde entra en juego la codificación segura . Ahora, este ejemplo fue solo un pequeño ejemplo, uno muy pequeño. Hay un sinfín de posibilidades de explotar un programa. Todo lo que necesita es una mente inteligente y una experiencia de explotación de las vulnerabilidades. Y si eres seguridad en la redchico/chica, entonces contratar a un codificador con poco o ningún conocimiento sobre los estándares de codificación segura puede resultar ser el mayor error que puede cometer. Por lo tanto, para tener un futuro profesional seguro, se convierte en una necesidad tener un conocimiento completo sobre los estándares de codificación segura.

Ahora, ¿quién puede decidir qué forma segura de codificar es? No es algo que un solo programador pueda hacer. Afortunadamente, no tenemos que preocuparnos por eso. Vaya y consulte los Estándares de codificación SEI CERT . Tiene una muy buena colección de pasos recomendados para garantizar que su programa sea seguro y que también se ordenan de acuerdo con los lenguajes de programación: C, C++, Java, Perl y Android. Pero, lamentablemente, para el lenguaje más fácil (en mi opinión) no existen tales estándares. ¿Significa eso que un programa de Python siempre es seguro? ¡¡NO!! Afortunadamente, algunos entusiastas de Python se propusieron hacer una lista de recomendaciones similares para Python y dieron como resultado el nacimiento de lo que hoy se conoce como PEP 0008 . Conocida como la Guía de estilo para el código Python , fue creada en 2001.

Con una lista exhaustiva de programas «seguros» e «inseguros», es imprescindible para cualquier programador de Python.

¡Ya basta de teoría! ¡Volvamos a algunas cosas de codificación! Ahora voy a usar un término de alta fidelidad que puede usar para impresionar a alguien 😉 y ese término es Cross Site Scripting (XSS) . En el escenario actual, cuando cada sitio tiene una sección de comentarios donde permiten a los visitantes compartir sus experiencias, XSS se ha convertido en un método utilizado con frecuencia por los piratas informáticos (¡no es un buen término!) para robar datos/iniciar denegación de servicio distribuida ( DDOS) ataques / instalación de virus y malware en el sistema del cliente y muchos otros actos ‘no tan buenos’.

La mayoría de las secciones de comentarios permiten a los usuarios escribir en código HTML para brindar la oportunidad de formatear. Esto significa que primero se procesa el comentario y luego se imprime el resultado en el sitio. Entonces, supongamos que en lugar de un comentario, escribo un código JavaScript como este:

window.alert(“Your comment has been received! – Geeks4Geeks”);

Ahora, según lo que discutí hace un momento, el código se procesará y el cliente recibirá una ventana emergente que menciona: “ ¡Su comentario ha sido recibido! – Geeks4Geeks ”. Eso no suena mal… Pero, imagínense las posibilidades. Uno puede escribir un script simple que descargará un malware/virus en el sistema del cliente, o mostrar un anuncio con contenido que lo atraiga a hacer clic en él, que estará presente en un IFrame que puede robar cookies (esto se llama Clickjacking ) que conduce a lo que se conoce como Session Hijacking ; ¡Las opciones no están limitadas! ¿Entonces, qué debemos hacer? Una vez más, ¡la solución está en la codificación segura! Solo para darle un ejemplo, de cómo puede evitar XSS y Clickjacking usando Django:

  
 

#Clickjacking

response = render_to_response(“webpage.html”, {},
context_instance=RequestContext(request))
response[‘X-Frame-Options’] = ‘DENY’ #Frame Killing
response[‘Content-Security-Policy’] = “frame-ancestors ‘none’”
return response

# XSS
#Django por defecto escapa de HTML, por lo que la mayoría de los programas estarán a salvo de los ataques #XSS
**{{ contenidos }}** #es seguro
**{{ contenidos|seguro }}** #Escape anulado, no es una buena idea 
 

Entonces, básicamente, el resumen es que si desea tener éxito en el campo de la codificación, entonces debe acostumbrarse a seguir los estándares de codificación segura . ¿Por qué? Porque solo son seguros aquellos programas que no son accesibles al público… Tan pronto como estén disponibles para todos, habrá un montón de gente intentando descifrar tu código… ¡Será mejor que te ocupes de eso!

Con esto me despido!
¡Auf Wiedersehen!  ! (Nos vemos de nuevo en alemán)
 
 

vish

Si también desea exhibir su blog aquí, consulte  GBlog para escribir un blog invitado en GeeksforGeeks.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *