Скрипт php логирование отдельных страниц

VoDela

Прославленный
Местный
Сообщения
478
Розыгрыши
0
Репутация
312
Реакции
157
Баллы
1 438
Моя фантазия подсказала что тему надо разместить именно в этом разделе.
Итак, в связи с гигантской активностью хакеров, которые пытаются ломануть мою бд, я в свою очередь хочу обезопасить себя и своё дитё от обидчиков. С чего я начал?
Ну конечно же я ограничил доступ ко всем админ панелям вот этим дерьмом:
PHP:
    $allowed_ips = "127.0.0.1";

    $ips = explode(" ",$allowed_ips);
    if (array_search($_SERVER["REMOTE_ADDR"],$ips) === FALSE) {
        echo "<p>Уважаемый хакер! Обещаю, я заблокирую ваш IP при очередной попытке поиметь админку.";
        exit;
    };
но мне показалось этого мало, и я решил сделать лог определенных файлов (админ панелей) для того, чтоб я видел кого карать...
Но вот ведь незадача, я уже сутки пытаюсь это сделать, и до сих пор безуспешно ...
Если есть люди которые за доброе спасибо мне его чирканут, я буду очень благодарен!
Нужен код, который будет логировать обращение именно к указанным файлам, например к admin.php cp.php
 
Последнее редактирование:

<?php session_start();
$allowed_ips = array("1"=>"127.0.0.1","2"=>"127.0.0.2","3"=>"127.0.0.3");
$ip=$_SERVER['REMOTE_ADDR'];
$_SESSION["atempt"]=0;
$atempt=(isset($_SESSION["atempt"]))?$_SESSION["atempt"]:0;

// if (array_search($ip,$allowed_ips) === FALSE) Mozit bit i takoje
if (array_search($ip,$allowed_ips) < 1) { // Rezultat jesli jest v array budet ravno ili bolshe 1
echo "<p>Уважаемый хакер! Обещаю, я заблокирую ваш IP при очередной попытке поиметь админку.";
$_SESSION["atempt"]=+1;
if ($_SESSION["atempt"]>=1){
$time=now();
$query="INSERT INTO Ban_IP (ip, time, note)
VALUES ('$_SERVER['REMOTE_ADDR']', '$time', 'при очередной попытке поиметь админку')";
//Zdes pravodim Zalif Adresa v MYSQL
};
exit;
};



pss. posli takoi zapisi v asnavnom index.php ili kak ti tam nazval
dalzna bit pravera4ka ili IP adresok zamanen

checkip($_SERVER['REMOTE_ADDR']);
if (checkip ==1){die("vam pizdec vi zablakiravani");}

function checkip($ipadress){
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql="Select * From Ban_IP WHERE ip='$ipadress'"
$result = $conn->query($sql);
if (isset ($result)){return 1;}
else{return 0;}
}
 
? могут быть синтаксис ошибки ,писал на быструю руку
 

Вложения

Если я этот скрипт инклюдом сделаю, будет работать?
 
Если я этот скрипт инклюдом сделаю, будет работать?
Нет. там надо подключение к бд настроить типо, так же нужен таблицу создать ( он не скинул запрос)
+ там есть лишнее.
 
А txt файлы не в моде? Хочется побольше автономности, доолжны понимать)
 
да надо сделать MYSQL Таблицу ,сделать подключение и работать будет :-) Можно место MYSQL сделать в .txt формате,ну это не удобно для быстрых манипуляций
 
да надо сделать MYSQL Таблицу ,сделать подключение и работать будет :-) Можно место MYSQL сделать в .txt формате,ну это не удобно для быстрых манипуляций
Та ну хз, можно и ткт, зачем париться :)

Я чутка переделал твой вариант)
PHP:
session_start();
$allowed_ips = array(
  "1" => "127.0.0.1",
  "2" => "127.0.0.2",
  "3" => "127.0.0.3",
);
$file = 'bannedip.txt';
$try = 'tryip.txt';

$ip = getIp();

if (array_search($ip, $allowed_ips) < 1) {
  $atempt = (isset($_SESSION["atempt"])) ? $_SESSION["atempt"] : 0;
  if ($atempt != 1) {
    $_SESSION["atempt"] = 1;
    $content = " \r\n " . $ip . " - " . date("Y-m-d H:i:s");
    file_put_contents($try, $content, FILE_APPEND | LOCK_EX);
    die("Уважаемый хакер! Обещаю, я заблокирую ваш IP при очередной попытке поиметь админку.");
    exit();
  }
  else {
    $content = " \r\n " . $ip . " - " . date("Y-m-d H:i:s");
    file_put_contents($file, $content, FILE_APPEND | LOCK_EX);
    die("GL HF.");
    exit();
  }
}
function getIp() {
  if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
  }
  elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  }
  else {
    $ip = $_SERVER['REMOTE_ADDR'];
  }
  return $ip;
}
 
Вот так наверное по изящней будет:
PHP:
if(!file_exists(FCreator::PATH_TO_FILE) 
{
    FCreator::getInstance()->createAndWrite();
} else {
    FCreator::getInstance()->write();
}
class FCreator
{
    public const PATH_TO_FILE = "путь к файлу";
    public static function getInstance()
    {
        return self::i = new FCreator();
    }
    public function write()
    {
        if(file_put_contents(PATH_TO_FILE, "Подключение на маршрут администратора. IP адрес: ".SERVER['REMOTE_ADDR']." Дата:".date('Y/m/d-h:m'))) {
            //записано в файл
        } else {
           //unknown error
        }
    }
    public function createAndWrite()
    {
    fcreate(PATH_TO_FILE);
        $this->write();
    }
}
 
Та ну хз, можно и ткт, зачем париться :-)

Я чутка переделал твой вариант)
PHP:
session_start();
$allowed_ips = array(
  "1" => "127.0.0.1",
  "2" => "127.0.0.2",
  "3" => "127.0.0.3",
);
$file = 'bannedip.txt';
$try = 'tryip.txt';

$ip = getIp();

if (array_search($ip, $allowed_ips) < 1) {
  $atempt = (isset($_SESSION["atempt"])) ? $_SESSION["atempt"] : 0;
  if ($atempt != 1) {
    $_SESSION["atempt"] = 1;
    $content = " \r\n " . $ip . " - " . date("Y-m-d H:i:s");
    file_put_contents($try, $content, FILE_APPEND | LOCK_EX);
    die("Уважаемый хакер! Обещаю, я заблокирую ваш IP при очередной попытке поиметь админку.");
    exit();
  }
  else {
    $content = " \r\n " . $ip . " - " . date("Y-m-d H:i:s");
    file_put_contents($file, $content, FILE_APPEND | LOCK_EX);
    die("GL HF.");
    exit();
  }
}
function getIp() {
  if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
  }
  elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  }
  else {
    $ip = $_SERVER['REMOTE_ADDR'];
  }
  return $ip;
}

Отлично :-) ,еще допиши как проверочку при заходе на СР если есть файл ip блок ставило ,и кстати если в дальнейшем он будет проводить манипуляций с ip адресами ,запихивать в .txt формат плохая практика ,это лишний ресурсы, сделать функциональность для снятия бана ,или что то похожие будет геморно или +бан со временем на 1 час 1 день или на 1год
 
Да зачееем) если он пытается поиметь админку, ему и пожизненного мало будет)
 
Отлично :-) ,еще допиши как проверочку при заходе на СР если есть файл ip блок ставило ,и кстати если в дальнейшем он будет проводить манипуляций с ip адресами ,запихивать в .txt формат плохая практика ,это лишний ресурсы, сделать функциональность для снятия бана ,или что то похожие будет геморно или +бан со временем на 1 час 1 день или на 1год
Можно еще и панельку прикнутить, в который все забаненные ип, с данными о браузере и т.п.
Но ....)
Тут цель блочить доступ к админке. разве не?
 
Расширение функционала приветствуется))
 
Да зачееем) если он пытается поиметь админку, ему и пожизненного мало будет)
куча примеров почему он ухватывает бан (не за что ) первый простой переход по ссылке например ср/admin кто нибудь такой плюшку спостил как на приколе игрушка БАН :-)
чювак 2 раза зайдет пиз..... бан у тебя по жизни :-)
+ таким методом можно забанить всех твоих Игроков ,просто расылачка (Посмотри что здесь ) :-) и все кто посмотрел бан
я лично использую метод попытка передачи параметров или подбор ключа не авторизированным пользователям
 
Зачем изобретать велик?
Уже за вас всё придумали, обдумали, передумали и реализовали, доступ по IP легко правиться в htaccess!
К тому же, если тучи сгущаются, можете изменить адрес админ центра.
 
Назад
Сверху Снизу