Ejecutar script sobre localhost

Iniciado por MCKSys Argentina, 5 Octubre 2016, 23:14 PM

0 Miembros y 1 Visitante están viendo este tema.

MCKSys Argentina

Bueno, tengo un webserver en una maquina, que tiene un index.html con el siguiente codigo (pongo una imagen porque salta la proteccion del foro):



Cuando abro esa pagina en la maquina "victima" (Osea, accedo por ejemplo a http://10.80.XX.XX\index.html), se carga y me dice "Access Denied" en la linea del "x.open...".

Esto me da a entender que no se puede hacer un POST al localhost si la pagina ha sido abierta desde otra web (remota).

Mi pregunta es: como puedo hacer para realizar dicho POST? Existe/conocen alguna forma de hacerlo?

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


engel lex

tengo años sin usar XMLHttpRequest XD pero estoy casi seguro que te falta un argumento... el ultimo es bool e indica si la llamada es asincronica... puedes mostrar el error completo, puedes ser un error de permisos o cualquier cosa aunque no dbeerìa dar error por estar la pagina abierta (a menos que el server està configurado para una sola conexión y esa pagina no la haya cerrado para el momento de ejecución)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MCKSys Argentina

Al parecer, los navegadores (probé con IE y Chrome) no dejan hacer POSTs desde una página que ha sido cargada desde internet, a un puerto X de localhost. Creo que depende del puerto, pero en este caso es un puerto "raro" o inseguro.

En especial, Chrome es quien da el error diciendo que el puerto no es válido (en realidad dice que es inseguro). IE directamente dice Access Denied, da la línea del script y no da más error.

Por las dudas, he verificado y la sintaxis es correcta.

En fin. Doy el tema por resuelto. Deberé trabajar sólo en forma local.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


engel lex

Disculpa responder tarde, no has visto si es problema de CORS?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MCKSys Argentina

Cita de: engel lex en 10 Octubre 2016, 04:11 AM
Disculpa responder tarde, no has visto si es problema de CORS?

Francamente, no tengo idea de qué rayos es eso...  :P

Según he leído, el navegador no debería (y Chrome, IE y FF no lo hacen) permitir hacer POST's a puertos de localhost (usando javascript) desde una página externa (en una LAN o internet); pues sería un problema de seguridad.

Ahora, también he leído que debería poder hacerse.

En fin, tengo un embrollo terrible con este tema, pero lo he dado por solucionado pues tengo forma de hacer el POST's desde la misma máquina.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


engel lex

no lo he intentado, pero es raro, más bien la gente dice que se salta CORS (cross origin resourse sharing) que son las reglas de acceso de jscript entre dominios, se lo salta, porque al ser localhost, "nunca sale del dominio"...

por allí veo que si funciona, a menos que lo hayan parcheado masivamente

http://security.stackexchange.com/questions/92008/can-a-website-make-an-http-request-to-localhost-how-does-it-get-around-the-cr

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MCKSys Argentina

Ese es uno de los posts que me encontré y que supuestamente dice que puede hacerse (aunque tiene 1 año).

Pero bueno, en mis pruebas ninguno de los 3 navegadores que mencioné me dejó realizar el POST al puerto que puse: IE dice "acceso denegado" en la línea que hace el "open" y los otros 2 dicen que el puerto es inseguro y no hacen el POST. Aclaro que la pagina estaba en un servidor de la red local.

Trataré de reveer el tema en esta semana, pero me parece que no es posible...

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


engel lex

Y si l conexion es a un puerto menor a 1024 o usas 8080? Aun asi?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MinusFour

Cita de: MCKSys Argentina en 10 Octubre 2016, 04:48 AMSegún he leído, el navegador no debería (y Chrome, IE y FF no lo hacen) permitir hacer POST's a puertos de localhost (usando javascript) desde una página externa (en una LAN o internet); pues sería un problema de seguridad.

No debería hacer ningun tipo de petición a un recurso en otro origen, a menos que el otro origen lo permita. XMLHTTPRequest sigue la política del mismo origen. Un origen es la combinación única del nombre del servidor (dominio, ip), el puerto, y el protocolo. Si alguna de estas partes varía significa que estas tratando origenes diferentes.

http://10.80.XX.XX\index.html[/b]
http://localhost:6666

En tu ejemplo, tienes nombre de servidores diferentes y el puerto también es diferente. Por lo tanto, diferentes origenes.

CORS es simplemente la tecnica para poder compartir recursos através de origenes. Realmente, no es nada díficil, lo único que tienes que hacer es enviar una cabecera HTTP desde el servidor que recibe la petición (en tu caso localhost) que permita el acceso a el origen en cuestion. Incluso puedes permitir el acceso a cualquier origen.

También es posible que sean reglas especificas del navegador Por ejemplo, IE tiene zonas pero no se como se relacionen con las políticas de acceso.