usando localhost por seguridad

¿Es una buena idea usar localhost / 127.0.0.1 / :: 1 por seguridad para permitir que un script acceda al contenido dentro del sitio, mientras presenta el nombre de usuario / contraseña de inicio de sesión para cualquier otra cosa?

Por ejemplo,

if(in_array($_SERVER["SERVER_ADDR"], array("127.0.0.1","::1"))){
  // allow internal access
  // (ie. scripts on the same site can access this protected data)
} else if(!empty($_POST['user']) && !empty($_POST['pass'])){
  // check if username and password are correct
  // - if yes - allow external access (ie. perhaps from an app or 3rd party site)
  // - if not - deny access
} else {
  // deny access
}

Sé que probablemente podría usar un sistema de tokens para verificar si la solicitud se realizó internamente, pero si tuviera que distribuir el script, seguramente alguien podría mirar el script y hacer un token para 'entrar'.

Supongo que si, por lo tanto, se requiere un sistema de tokens, sería mejor generar una clave de cifrado para cada usuario que quiera usar el script. ¿Sería seguro almacenar una clave de cifrado dentro de un archivo PHP o, mejor, almacenarla en una base de datos? ¿Cuál es la mejor forma de almacenarlo?

preguntado el 07 de septiembre de 11 a las 10:09

Si está pensando en alojar su proyecto en un entorno de alojamiento compartido, no creo que verificar con localhost sea una buena idea. -

esto es cierto ... cualquier sugerencia para verificar que el origen de la solicitud provenga del sitio real es bienvenida; no quería verificar la IP del servidor porque sé que estas cosas podrían ser falsificadas, aunque pensé que tal vez localhost se vería en su lugar, en la propia máquina del usuario final (¿entonces tal vez no sea falsificable?) -

$_SERVER['REMOTE_ADDR'] y $_SERVER['SERVER_ADDR"] siempre será la dirección de localhost si accede a la aplicación a través de localhost. De lo contrario, SERVER_ADDR será la dirección del servidor y REMOTE_ADDR será la dirección del cliente. Pero, ¿por qué necesitarías esto de todos modos? Quiero decir ... si lo hago bien, ¿quieres que tu sitio web se rastree solo? -

hmm ... Veo que serán diferentes cuando estén en vivo ... esta será una capa de seguridad para proporcionar acceso a los datos JSON de la base de datos MySQL, por lo que solo el sitio puede acceder y los usuarios con autorización ... haciéndolo así para tratar de simplificar el fondo del sitio para que los datos no se soliciten en 2 lugares / 2 formas diferentes, sino solo en una (mientras se verifica si el solicitante tiene permiso para acceder) -

Eso no tiene sentido: su sitio web puede leer directamente desde la base de datos MySQL. Supongo que desea datos codificados JSON para solicitudes ajax, pero esa es una tecnología del lado del cliente: solo puede verificar las credenciales del usuario, nunca puede parecer que proviene de su servidor. -

1 Respuestas

sí, es relativamente es seguro hacerlo, siempre que tenga control de acceso total sobre su servidor (sin alojamiento compartido de ningún tipo).

Sin embargo, su código tiene algunas fallas, querrá verificar $_SERVER['REMOTE_ADDR'] para ser localhost / 127.0.0.1 / :: 1. No $_SERVER['SERVER_ADDR'].

Luego, en la segunda declaración if, tendrá que verificar isset($_POST['user']) y isset($_POST['pass']) antes de usar empty() en un índice posiblemente inexistente.

Respondido el 12 de Septiembre de 11 a las 00:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.