Повышаем безопасность Opencart 2x в ручную!

Тема в разделе "Инструкции и FAQ", создана пользователем elvindesign, 6 июн 2016.

  1. West

    West Новичок

    Сообщения:
    3
    Симпатии:
    0
    хранить secretkey в куках в открытом виде очень удобно. И безопасно...

    а доступ для своего IP во времена динамических адресов это Вы явно передергиваете))
     
  2. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    641
    KirillKern нравится это.
  3. KirillKern

    KirillKern Активный пользователь

    Сообщения:
    102
    Симпатии:
    34
    спасибо !!!
    Я искал как код оформить ! думал пипец на таком форуме и код никак не оформить !!! )))
    честное спасибо ! )

    ну чот как-то.. вы очкуете на тему взлома своего писишника ?
    не хочу понтоваться. но у меня ip постоянный. на вход в админку у хостера тоже привязка к ip...
    но вообщет, конечно, бред жосткий на вход в админку магаза ставить...
    с моей стороны это был как бы сарказм...

    хотя поставил бы.еслиб с мобилы не заходил.
     
  4. naxan

    naxan Новичок

    Сообщения:
    2
    Симпатии:
    0
    "делаем указку в скрипте в хеадере", можно поподробней для чайника, как сослаться на него?
     
  5. KirillKern

    KirillKern Активный пользователь

    Сообщения:
    102
    Симпатии:
    34
    Если на в папке админ всё выглядит так: (файлы, с которыми работаем выделил)
    1.PNG

    то в логин.тпл выглядит так: (ну либо в модуле править, secret1, secret2 - ваши переменные)
    Код:
    <?php
    <?php
    if (isset($_GET['secret1']))
    {$seckey = $_GET['secret1'];
    setcookie ("secret1", $_GET['secret1']);}
    else if
    (isset($_COOKIE['secret1']))
    {$seckey = $_COOKIE['secret1']; }
    else {$seckey = '';}
    if ($seckey != 'secret2') {   header("HTTP/1.1 301 Moved Permanently");
       header("Location: ip-saved.php");  //указываем на какой файл делать редирект
       exit(); } else { ?>
    <html dir="<?php echo $direction; ?>" lang="<?php echo $lang; ?>">
    <head>
    <meta charset="UTF-8" />
    <title><?php echo $title; ?></title>
    

    ну и ip-saved.php дублирую, чтоб вам не листать туда-сюда:
    Код:
    <?php
    $file="admin.log";    //куда пишем логи
    $col_zap=4999;        //строк в файле не более
    
    function getRealIpAddr() {
      if (!empty($_SERVER['HTTP_CLIENT_IP']))        // Определяем IP
      { $ip=$_SERVER['HTTP_CLIENT_IP']; }
      elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))    // Если IP идёт через прокси
      { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; }
      else { $ip=$_SERVER['REMOTE_ADDR']; }
      return $ip;
    }
    
    if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexBot')) {$bot='YandexBot';}
    elseif (strstr($_SERVER['HTTP_USER_AGENT'], 'Googlebot')) {$bot='Googlebot';}
    else { $bot=$_SERVER['HTTP_USER_AGENT']; }
    $ref = $_SERVER['HTTP_REFERER'];
    $ip = getRealIpAddr();
        $ip = getRealIpAddr();
        $date = date("H:i:s d.m.Y");        //дата события
        $home = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];    //какая страница сайта
        $lines = file($file);
        while(count($lines) > $col_zap) array_shift($lines);
        $lines[] = $ip."|".$date."|".$bot."|".$home."|".$ref."\r\n";
        file_put_contents($file, $lines);
    echo "ip saved, suka"
    ?>
    


    admin.log будет иметь примерно такой вид:
    109.167.111.28, 66.102.9.90|12:45:39 01.03.2016|Mozilla/5.0 (Linux; Android 5.1.1; A0001 Build/LMY48Y) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.95 Mobile Safari/537.36|mydomain.com/admin/ip-saved.php|
    109.167.111.28|12:48:12 01.03.2016|Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36|mydomain.com/admin/ip-saved.php|
    109.167.111.28|20:58:06 02.03.2016|Mozilla/5.0 (Linux; Android 4.2.2; H30-U10 Build/HuaweiH30-U10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.95 Mobile Safari/537.36|mydomain.com/admin/ip-saved.php|
    62.109.8.153|05:19:49 08.03.2016||mydomain.ru/admin//ip-saved.php|
    185.125.216.38|14:38:16 08.03.2016||mydomain.ru/admin//ip-saved.php|
    50.62.30.203|22:18:36 02.05.2016||mydomain.com/admin/ip-saved.php|
    62.109.8.153|12:22:42 31.05.2016||mydomain.com/admin//ip-saved.php|

    Если кто-то особо настойчиво долбит в админку.
    В admin, делаем в каталоге файлик (через блокнот и т.п.) полное имя которого будет выглядеть .htaccess (пустое имя, расширение htaccess)

    в файле прописываем:

    Код:
    <Limit GET POST>
    order allow,deny
    deny from 94.180.109.24
    deny from 80.250.234.220
    allow from all
    </Limit>
    
    вместо примерных ipшников вписываем ip адреса своих гостей

    после чего настырные будут получать страницу вида
    2.PNG

    можно подурачиться и вместо закрытия доступа в хтаксес делать редирект(мы закрываем доступ и сообщаем серверу куда послать,если доступ закрыт)
    перед списком айпишников пишем

    Код:
    RewriteBase /
    ErrorDocument 403 http://natribu.org/

    всё, надеюсь, этот пост многим поможет обезопасить свою админку и завести новых друзей )
     
    Последнее редактирование: 29 июн 2016
    Pofig, elvindesign, alirus и 3 другим нравится это.
  6. lilianz

    lilianz Новичок

    Сообщения:
    10
    Симпатии:
    3
    Мучался до утра, но так и не разобрался что не так в последней инструкции, не работает и все тут =(
     
  7. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    641
    Это такое спам сообщение? Универсальное для всех форумов и любой темы... ??
     
  8. lilianz

    lilianz Новичок

    Сообщения:
    10
    Симпатии:
    3
    Извините, дело было глубокой ночью, отчаявшись и не соображая написал то, что выше. С проблемой уже разобрался более менее, но с частью кода на отказ не хочет работать:
    <html dir="<?php echo $direction; ?>" lang="<?php echo $lang; ?>">
    <head>
    <meta charset="UTF-8" />
    <title><?php echo $title; ?></title>
     
  9. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.570
    Симпатии:
    437
    Вы обновили модификаторы?
     
  10. lilianz

    lilianz Новичок

    Сообщения:
    10
    Симпатии:
    3
    да, конечно, и все равно выдает Parse error: syntax error, unexpected '<' in /home/***/***/docs/system/storage/modification/admin/view/template/common/login.tpl on line 3
     
  11. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    641
    Правильно выдает ))) Потому что тяп ляп...
    Как минимум должно выглядеть так
    PHP:
    <?php
        
    if (isset($_GET['secret1'])) {
            
    $seckey $_GET['secret1'];
            
    setcookie ("secret1"$_GET['secret1']);
        } elseif (isset(
    $_COOKIE['secret1'])) {
            
    $seckey $_COOKIE['secret1'];
        } else {
            
    $seckey '';
        }
        
        if (
    $seckey != 'secret2') {
            
    header("HTTP/1.1 301 Moved Permanently");
            
    header("Location: ip-saved.php");  //указываем на какой файл делать редирект
            
    exit();
        } else {
            
        }
    ?>

    <html dir="<?php echo $direction?>" lang="<?php echo $lang?>">
    <head>
    <meta charset="UTF-8" />
    <title><?php echo $title?></title>
     
    lilianz нравится это.
  12. lilianz

    lilianz Новичок

    Сообщения:
    10
    Симпатии:
    3
    Спасибо большое!
    Теперь понял где была ошибка. С одной стороны все банально просто когда смотришь на готовое решение, а с другой все равно сам не разобрался бы. :)
     
  13. lilianz

    lilianz Новичок

    Сообщения:
    10
    Симпатии:
    3
    Внесу свою лепту, подкрутил для oсmod кажется нигде ничего не напутал, только пароль в install.xml сменить с pass1 и pass2.
     

    Вложения:

    pavazar и Ален нравится это.