Hace poco quería listar de manera recursiva todos los .html que tenía en una carpeta. Pensé que tenía que crear un script de Windows pero resulta que con un simple comando de DOS resulta suficiente:
dir /s/b *.html > results.txt
miércoles, 10 de octubre de 2012
domingo, 7 de octubre de 2012
Android: Nombres de recursos
Si obtienes un error diciendo lo siguiente:
"Invalid file name: must contain only [a-z0-9_.]"
"Invalid file name: must contain only [a-z0-9_.]"
Es porque alguno de los recursos que colocaste en la carpeta "res" no sigue las reglas de nombres de archivos apropiada.
Recientemente, en mis primeras incursiones en el desarrollo Android, nombre un archivo como "the-beatles-band". Según yo estaba usando caracteres válidos, pero no había notado que el guion que sale en la regla es para describir una expresión regular. "a-z" significa letras de la "a" a la "z" en minúscula. De igual forma "0-9" significa los números del 0 al 9. Así que tuve que reemplazar el guion por la raya abajo ("_").
miércoles, 3 de octubre de 2012
JSTL: Ruta actual de una página
Para obtener por medio de JSTL el path actual de una página incluyendo el query string, si lo tiene:
<c:set var="url"><c:out value="${pageContext.request.scheme}://${pageContext.request.serverName}${pageContext.request.contextPath}${pageContext.request.servletPath}"/><c:if test="${not empty pageContext.request.queryString}"><c:out value="?${pageContext.request.queryString}"/></c:if>
</c:set>
lunes, 1 de octubre de 2012
Prevención de XSS (Cross-site scripting)
Dejo a disposición un pequeño ejemplo de como evitar del lado del cliente, haciendo la aclaración de que no debemos omitir la validación del lado del servidor, un ataque de seguridad usando el Cross-site scripting (XSS).
Esta vulnerabilidad se da cuando una aplicación web toma datos que el usuario suministra y los despliega en una página HTML. Si el usuario suministra datos que contiene caracteres que son interpretados como parte de un elemento HTML en lugar de texto literal, entonces un atacante puede modificar el HTML que es recibido por el navegador de la victima.
Para poder explotar esta vulnerabilidad, un usuario malicioso debe engañar a una victima para que visite un URL con la carga de XSS. Una carga de XSS puede consistir de HTML, JavaScript u otro tipo de contenido que pueda ser interpretado en el navegador.
Este tipo de ataque apunta a usuarios de una aplicación web, en lugar de la aplicación web misma. Puede llevar al robo de credenciales de usuario e información financiera personal.
En el siguiente script recorro todos los elementos del formulario para reemplazar los paréntesis angulares ("<>") por sus códigos HTML equivalentes. Repito que este filtro debe aplicarse también del lado del servidor, pues un atacante podría crear un formulario propio sin estas validaciones y redirigir a una victima a esta versión maliciosa del formulario.
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#formId').submit(function() {
var $inputs = $('#formId :input');
var values = {};
$inputs.each(function() {
var newValue=$(this).val().replace("<", "<").replace(">", ">");
$(this).val(newValue);
});
});
});
</script>
</head>
<body>
<form id="formId" action="sucess.html" method="get">
user:<input type="text" name="username" />
Password:<input type="password" name="password" />
<input type="submit" />
</form>
</body>
</html>
Suscribirse a:
Entradas (Atom)