Ciao a tutti
Volevo sottoporre alle vostre critiche un mio start.php che io carico in ogni pagina del sito, per chi mi volesse ammazzare di critiche gliene sarei grato
Non è che è troppo pesante da caricare per ogni pagina?? Purtroppo io ho l'ansia di controllo, controllo tutti gli accessi, li registro sul database, cerco di fare controlli incrociati, e sono ossessionati dagli attacchi
ah a proposito, il mio sito non è pubblico, però noto che ci sono continuamente accessi all'index del sito che non conosce nessuno
139.162.116.133
HTTP Banner Detection (
https://security.ipip.ne)
138.246.253.24
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWeb.
13.77.153.138
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36..
sono strapieno di questi... ma cosa sono? sono bot che scannano internet a caso? Perché il mio è un sito prova, non lo conosce nessuno. L'homepage è bianca.
E chissà che magari qualcuno mi ha bucato il sito e io che ne saprò... mah, meglio non pensarci...
Grazie a chi mi dedica parte del suo tempo
require_once($_SERVER["DOCUMENT_ROOT"]."/start/start.php");
start.php parte così
<?php
set_time_limit(0);
require_once("globali.php");
require_once("function.php");
require_once("debug.php");
require_once("db.php");
require_once("session.php");
require_once("access.php");
require_once("protect.php");
?>
globali.php ha semplicemente una serie di variabili globali uguali per tutto il sito, tipo:
$PERCORSO_PRINCIPALE = $_SERVER["DOCUMENT_ROOT"]."/res";
$PERCORSO_FOTO_UPLOAD = $PERCORSO_PRINCIPALE."/".$FOTO_UPLOAD;
ecc ecc
function.php
ha una serie di definizioni di funzioni globali che ogni pagina del sito potrebbe utilizzare (al caricamento non esegue nulla)
funzioni per il controllo esistenza cartelle o file, scrittura di log su file di testo.
debug.php è così. Tramite una determinata funzione, modifico questo stesso file php da un altro file php e sostituisco i true e i false a seconda del caso
<?php
////////////////////////////////////////////// PANNELLO GENERALE ATTIVAZIONI/DISATTIVAZIONI
define('__DEBUG', true); //true -> testing
define('__BLOCK_ALL', false);
define('__BLOCK_DB', false);
define('__BLOCK_PAGE', false);
define('__BLOCK_ADDRESS', true);
define('__BLOCK_UPLOAD_PHOTO', false); // true per bloccare invio foto
define('__BLOCK_ADDITEMS', false); // true per simulazione interna
define('__BLOCK_ADDITEMS_EXCEPT_ADMIN', false); // true per inserimento solo ADMIN
////////////////////////////////////////////// ATTIVAZIONE/DISATTIVAZIONE DEBUG
if(__DEBUG)
{
error_reporting(E_ALL);
ini_set("display_errors", 1);
ini_set("display_startup_errors", 1);
ini_set("track_errors", 1);
ini_set("log_errors", 1);
ini_set("error_log", "/logz.txt");
ini_set("log_errors_max_len", 0);
}
else
{
error_reporting(0);
ini_set("display_errors", 0);
ini_set("display_startup_errors", 0);
ini_set("track_errors", 0);
ini_set("log_errors", 0);
}
////////////////////////////////////////////// ATTIVAZIONE/DISATTIVAZIONE INSERZIONI
if(__BLOCK_ADDITEMS)
{
}
////////////////////////////////////////////// INSERIRE MIO IP PER BLOCCARE ACCESSO A TUTTE LE PAGINE
if(__BLOCK_ALL)
{
if($_SERVER['REMOTE_ADDR'] != "") //Inserire il mio ip
{
exit();
}
}
////////////////////////////////////////////// BLOCCARE UTILIZZO DB A TUTTI O TRANNE AL MIO IP
if(__BLOCK_DB)
{
}
////////////////////////////////////////////// BLOCCARE ACCESSO AD UNA PAGINA IN PARTICOLARE
if(__BLOCK_PAGE)
{
if($_SERVER['SCRIPT_FILENAME'] == "")
{
exit();
}
}
////////////////////////////////////////////// BLOCCARE UN SINGOLO IP
if(__BLOCK_ADDRESS)
{
if(isset($_SESSION['block']) AND $_SESSION['block'] == TRUE)
{
echo "bloccato";
//header("location: "); //reindizzamento homepage
}
if($_SERVER['REMOTE_ADDR'] == "")
{
exit();
}
if($_SERVER['REMOTE_ADDR'] == "" AND $_SERVER['HTTP_USER_AGENT'] == "")
{
exit();
}
}
////////////////////////////////////////////// BLOCCARE CARICAMENTO FOTO
if(__BLOCK_UPLOAD_PHOTO)
{
}
////////////////////////////////////////////// BLOCCARE INSERIMENTO INSERZIONI
if(__BLOCK_ADDITEMS)
{
}
////////////////////////////////////////////// BLOCCARE INSERIMENTO INSERZIONI TRANNE PER LIVELLO 0
if(__BLOCK_ADDITEMS_EXCEPT_ADMIN)
{
}
?>
db.php ha questo
<?php
$mysqli_connection = mysqli_connect('ip', 'db_m', '!sd@ve?Ry_eP~');
mysqli_query($mysqli_connection, "SET NAMES 'UTF8'");
if(!$mysqli_connection)
{
echo "Errore connessione Database. Contattare Amministratore";
mysqli_close($mysqli_connection);
exit();
}
if(!mysqli_select_db($mysqli_connection, "db_mts"))
{
echo "Errore Tabella. Contattare Amministratore";
mysqli_close($mysqli_connection);
exit();
}
?>
session.php è così
<?php
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
session_start();
session_regenerate_id();
////////////////////////////////////////////////////////////// CONTROLLO INATTIVITA' UTENTE ////////////////////////////////////////////////////////////
if(isset($_GET['check_session']))
{
if(isset($_SESSION['username']))
{
$active = time()-$_SESSION['timer'];
if((time()-$_SESSION['timer']) > 1800)
{
require_once("db.php");
require_once("function.php");
mysqli_query($mysqli_connection, "UPDATE team SET active = '', online = '' WHERE username = '{$_SESSION['username']}'");
auto_logout();
$_SESSION = array();
echo "Sessione scaduta!";
exit();
}
}
}
////////////////////////////////////////////////////////////// OPERAZIONI AL LOGIN ////////////////////////////////////////////////////////////
if(isset($_GET['login']))
{
$username = strip_tags(trim(substr($_GET['username'], 0, 16)));
$password = sha1(sha1(strip_tags(trim(substr($_GET['password'], 0, 16)))));
if(mysqli_num_rows($result = mysqli_query($mysqli_connection, "SELECT * FROM team WHERE username = '$username' AND password = '$password'"))>0)
{
$result_postlogin = mysqli_fetch_assoc($result);
$_SESSION['TOT'] = sha1(sha1(md5($_SERVER['HTTP_USER_AGENT'].$_SERVER['HTTP_ACCEPT_LANGUAGE'].$_SERVER['REMOTE_ADDR'])));
$_SESSION['id'] = time();
$_SESSION['timer'] = time();
$_SESSION['nome'] = $result_postlogin['nome'];
$_SESSION['username'] = $result_postlogin['username'];
$_SESSION['level'] = $result_postlogin['level'];
check_folder();
log_login();
$q = "UPDATE session SET LOGIN = 'ok', username = '{$_SESSION['username']}' WHERE id = '{$_COOKIE['id']}'";
mysqli_query($mysqli_connection, $q);
mysqli_query($mysqli_connection, "UPDATE team SET online = 'on', active = '0' WHERE username = '{$_SESSION['username']}'");
}
else
{
if(isset($_SESSION['tent_fail']))
{
$_SESSION['tent_fail'] = $_SESSION['tent_fail']+1;
}
else
{
$_SESSION['tent_fail'] = 1;
}
}
}
////////////////////////////////////////////////////////////// OPERAZIONI DOPO LOGIN ////////////////////////////////////////////////////////////
if(isset($_SESSION['username']))
{ //se utente cambia ip o pc o browser
if($_SESSION['TOT'] != sha1(sha1(md5($_SERVER['HTTP_USER_AGENT'].$_SERVER['HTTP_ACCEPT_LANGUAGE'].$_SERVER['REMOTE_ADDR']))))
{
$active = time()-$_SESSION['timer'];
mysqli_query($mysqli_connection, "UPDATE team SET active = '$active', online = '' WHERE username = '{$_SESSION['username']}'");
$_SESSION = array();
header("location: homepage");
} //se utente è inattivo da più di 30min
if((time()-$_SESSION['timer']) > 1800)
{
mysqli_query($mysqli_connection, "UPDATE team SET active = '$active', online = '' WHERE username = '{$_SESSION['username']}'");
$_SESSION = array();
header("location: homepage");
}
if(!isset($_GET['check_session']))
{
$active = time()-$_SESSION['timer'];
$_SESSION['timer'] = time();
mysqli_query($mysqli_connection, "UPDATE team SET active = '$active' WHERE username = '{$_SESSION['username']}'");
}
?>
<?php
//<script type="text/javascript">
//require_once($_SERVER["DOCUMENT_ROOT"]."/js/check_session.js");
//require_once($_SERVER["DOCUMENT_ROOT"]."/js/check_error.js");
//</script>
?>
<?php
}
////////////////////////////////////////////////////////////// OPERAZIONI AL LOGOUT ////////////////////////////////////////////////////////////
if(isset($_GET['logout']))
{
mysqli_query($mysqli_connection, "UPDATE team SET online = '', active = '' WHERE username = '{$_SESSION['username']}'");
log_logout();
$_SESSION = array();
header("location: homepage");
}
?>
access.php è così
<?php
if(!isset($_COOKIE['id']))
{
$id = substr(md5($_SERVER['REMOTE_ADDR']), 0, 12 );
$id .= "-".rand(1,10000000);
setcookie("id", $id, 0, "/", "", FALSE, TRUE);
new_istance($id);
}
else
{
new_istance($_COOKIE['id']);
}
function update_istance($id)
{
global $mysqli_connection;
$timestamp = time();
$q_update = "UPDATE session SET
id = '$id',
data = now(),
timestamp = '$timestamp',
REMOTE_ADDR = '{$_SERVER['REMOTE_ADDR']}',
SCRIPT_NAME = '{$_SERVER['SCRIPT_NAME']}',
counter = counter+1
WHERE id = '$id'";
$result = mysqli_query($mysqli_connection, $q_update);
}
function new_istance($id)
{
$timestamp = time();
global $mysqli_connection;
if(__FILE__ == $_SERVER['SCRIPT_FILENAME'])
{
$direct = 0;
}
else
{
$direct = 1;
}
mysqli_query($mysqli_connection, "INSERT INTO session (
id,
data,
timestamp,
REMOTE_ADDR,
HTTP_USER_AGENT,
SCRIPT_NAME,
direct,
counter,
cookie
)
VALUES (
'$id',
now(),
'$timestamp',
'{$_SERVER['REMOTE_ADDR']}',
'{$_SERVER['HTTP_USER_AGENT']}',
'{$_SERVER['SCRIPT_NAME']}',
'$direct',
'1',
'OK'
)");
}
?>
infine protect.php è così
<?php
//require_once($_SERVER["DOCUMENT_ROOT"]."/js/nomousedx.js");
if(!isset($_SESSION['username']) AND strpos($_SERVER['SCRIPT_NAME'], "reserved") AND !strpos($_SERVER['SCRIPT_NAME'], "main"))
{
header("location: homepage");
}
//if(__FILE__ == $_SERVER['SCRIPT_FILENAME'])
if(!isset($_SESSION['username']))
{
$pagina_corrente = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if($pagina_corrente == "index.php")
{
$q = "UPDATE session SET WARNING = 'TRUE' WHERE REMOTE_ADDR = '{$_SERVER['REMOTE_ADDR']}' AND HTTP_USER_AGENT = '{$_SERVER['HTTP_USER_AGENT']}' AND SCRIPT_NAME = '{$_SERVER['SCRIPT_NAME']}'";
mysqli_query($mysqli_connection, $q);
header("location: homepage");
exit();
}
}
///////////////////////////////////////////////////// PERMESSI CARTELLE /////////////////////////////////////////////////////////////////
if(isset($_SESSION['level']))
{
if(
(strpos($_SERVER['SCRIPT_NAME'], "call") AND $_SESSION['level'] != 0) OR
(strpos($_SERVER['SCRIPT_NAME'], "conti") AND $_SESSION['level'] > 1) OR
(strpos($_SERVER['SCRIPT_NAME'], "cron") AND $_SESSION['level'] != 0) OR
(strpos($_SERVER['SCRIPT_NAME'], "reserved/db") AND $_SESSION['level'] != 0) OR
(strpos($_SERVER['SCRIPT_NAME'], "reserved/profile") AND !isset($_SESSION['username']))
))
{
header("location: homepage");
}
}
///////////////////////////////////////////////////// SEZIONE BLOCCO UTENTE /////////////////////////////////////////////////////////////////
if(isset($_SESSION['tent_fail']) AND $_SESSION['tent_fail']>5)
{
$_SESSION['block'] = TRUE;
header("location: homepage");
}
?>