buenas, para el primer fragmento de código tienes una vulnerabilidad debida a considerar las operaciones de "acceso" y "lectura y escritura" sobre recursos como un fichero, como operaciones atómicas, no siendo así.
Esto es, desde el momento en que haces "open()" sobre el fichero, hasta que realmente lees o escribes sobre él, alguien puede, mediante un proceso o hilo remoto hacerse con el control de ese fichero, otro fichero o incluso con otros recursos del sistema. Este tipo de vulnerabilidades es conocida como
toctou (
time
of
check to
time
of
use).
solución: una posible solución, aunque no la única, se basa en usar excepciones controladas (mediante bloques
try...except) para las operaciones de acceso y l/e, en vez de usar bloques (
if...else), ya que así evitarás que cualquier atacante pueda escalar privilegios.
---------------
para el segundo fragmento de código en java, sólo estás controlando que un atacante pueda hacer un xss usando la cadena "<script>", pero no para cualquier otro tipo de cadena que llegue por el parámetro "comment", como por ejemplo un "
<iframe>" que apunte hacia sitios de terceros que contengan código malicioso.
solución: El siguiente trozo de código quizás sea un poquito mejor que el que has puesto, en cuanto a "sanear" parámetros:
Código:
comment.replaceall("<", "<").replaceall(">", ">");
comment.replaceall("\\(", "(").replaceall("\\)", ")");
comment.replaceall("eval\\((.*)\\)", "");
comment.replaceall("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\"");
comment.replaceall("script", "");
con él, te evitarás que alguien pueda inyectar código javascript y cualquier código html en general (por ejemplo meter etiquetas <iframe>, <frame>, <a>, <img>, <audio>, <video>, etc...).
Un saludo.
Marcadores