¿Mostrar enlace a la sección de administración o no?

2

Tengo un sitio de preguntas y respuestas. Tengo una sección de administración. Desde esa sección puedo eliminar usuarios, hilos, respuestas y editar otras cosas. Tengo un código simple al inicio de la página de administración:

   if(($session->protected_page_security()) == FALSE || 
    ($session->is_administrator() == FALSE)){
     $session->logout;
     redirect_to('../index.php');
    }

Una clase de sesión tiene los siguientes métodos ....

 public function protected_page_security() {
    if(!$this->confirm_session_is_valid() && !$this->check_login()){
  return false;
    } else {
  return true;
   }
 }


 public function confirm_session_is_valid() {
  $check_ip = true;
  $check_user_agent = true;
  $check_last_login = true;

if($check_ip && !$this->request_ip_matches_session()) {
  return false;
}
if($check_user_agent && !$this->request_user_agent_matches_session()) {
  return false;
}
if($check_last_login && !$this->last_login_is_recent()) {
  return false;
}
return true;
}



public function request_ip_matches_session() {
   if(!isset($this->ip) || !isset($_SERVER['REMOTE_ADDR'])) {
    return false;
  }
  if($this->ip === $_SERVER['REMOTE_ADDR']) {
    return true;
  } else {
    return false;
  }
}


 public function request_user_agent_matches_session() {

  if(!isset($_SESSION['user_agent']) || !isset($_SERVER['HTTP_USER_AGENT'])) {
    return false;
  }
  if($_SESSION['user_agent'] === $_SERVER['HTTP_USER_AGENT']) {
    return true;
  } else {
    return false;
  }
}


 public function last_login_is_recent() {
  $max_elapsed = 60 * 60 * 24; // 1 day
  // return false if value is not set
  if(!$this->last_login) {
  return false;
  }
   if(($this->last_login + $max_elapsed) >= time()) {
  return true;
  } else {
  return false;
  }
  }


public function is_administrator(){
            $administrator_ids = array("164");
            if(in_array($_SESSION['user_id'], $administrator_ids)){              
                return true;
              } else {       
                return false;
              }
            }

USER_ID="164" es un administrador.

Mi pregunta es esta:

¿Crees que no es aconsejable tener un enlace a la sección de administración en el sitio (incluso si solo se muestra para mí, cuando inicio sesión)? Si alguien puede acceder a esta página, puede derribar toda la base de datos. ¿Es más inteligente no tener ningún enlace y simplemente escribir la dirección como una url?

Pido disculpas por la simple pregunta -

Supongo que es posible que alguien descubra (piratee) la estructura de archivos del sitio y "vea" que hay una sección de administración independientemente de si hay algún enlace correcto, así que tal vez mi pregunta sea un moote.

    
pregunta GhostRider 06.08.2014 - 18:12
fuente

1 respuesta

2

Si bien puede disuadir a los piratas informáticos muy aficionados, el concepto de seguridad por oscuridad no es muy efectivo para proporcionar seguridad real.

Un enfoque mucho mejor sería restringir la página de administración a una IP (la tuya).

También, asumo que estás usando wordpress o algún otro sistema de administración de contenido. Mis dos mejores recomendaciones para mejorar la seguridad serían mantener el sistema actualizado y mantener una contraseña maestra segura.

    
respondido por el Matthew Peters 06.08.2014 - 22:37
fuente

Lea otras preguntas en las etiquetas