Ho un sito di domande e risposte. Ho una sezione di amministrazione. Da quella sezione posso cancellare utenti, thread, risposte e modificare varie altre cose. Ho un codice semplice all'inizio della pagina di amministrazione:
if(($session->protected_page_security()) == FALSE ||
($session->is_administrator() == FALSE)){
$session->logout;
redirect_to('../index.php');
}
Una sessione di sessione ha i seguenti metodi ....
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" è un amministratore.
La mia domanda è questa:
Pensa che non sia saggio avere un link alla sezione di amministrazione del sito (anche se viene mostrato solo per me, quando effettuo l'accesso)? Se qualcuno può accedere a questa pagina, può far cadere l'intero database. È più saggio non avere alcun link e basta digitare l'indirizzo come url?
Mi scuso per la semplice domanda -
Immagino che sia possibile per qualcuno scoprire (hackerare) la struttura del file del sito e "vedere" che c'è una sezione di amministrazione, indipendentemente dal fatto che ci sia un link giusto, quindi forse la mia domanda è moote.