Уважаемые пользователи форума, убедительно просим вас переходить в телеграмм продавца, исключительно по предоставленной ссылке. Проверяйте продавца, отправив сообщение на электронную почту, чтобы убедиться в том, что вы общаетесь действительно с ним.

Информация Защита страниц по IP

Тема в разделе "Статьи", создана пользователем TEXHO, 18 янв 2018.

  1. TEXHO

    TEXHO Member

    Сообщения:
    141
    Симпатии:
    0
    Все знают, что неплохо бы защищать некоторые страницы (админки, панельки ботнетов, илитных связок и т.д) не только по паролю, но и по IP. Но если вы IP-божм, у которого нет определенного IP-адреса, то возникает проблема. Каждый раз заходить по FTP или SSH, чтобы править .htaccess - это очень обломно. И казалось бы, при таком раскладе, нет смысла ставить защиту по IP.

    Но для решения этой проблемки, нам понадобиться всего один php-скриптенг и одна маленькая программа (хотя, можно даже и без нее обойтись).

    Принцип действия следующий: php-скрипт генерирует некое число-вопрос, программа, на основе этого числа-вопроса создает число-ответ (я думаю, вы уже поняли, у кого украдена идея). Если ответ правильный, то в .htaccess записывается наш текущий ip-адрес, а прошлый затирается.

    Код php-скрипта:

    Code:
    ?php
    if($_SERVER[REQUEST_METHOD]==POST){
    //Тут наша хитрая-прехитрая проверка
    if ($_POST[a]==( $_POST[q] * 7 - $_POST[q] * 2 + $_POST[q] * 3) ){
    echo "font color=green>h1>Access granted!/h1>/font>";
    //Пишем в .htaccess Ip счастливчика
    $fh = fopen(.htaccess,w);
    // Вместо secret.php - Защищаемая по IP папка или файл
    $to_write="Files secret.php>
    ".
    "order deny,allow
    ".
    "deny from all
    ".
    "allow from ".$_SERVER[REMOTE_ADDR].
    "
    /Files>";
    fwrite($fh, $to_write);
    fclose($fh);
    } else{
    echo "font color=red>h1>Access denied!/h1>/font>";
    }
    }else{
    echo "
    form action= method=post>
    Q: input type=text name=q value=".rand(1000,9000). ">br>
    A: input type=text name=a>br>
    input type=submit value=>>>
    /form>";
    }​

    Код чудо программки (AutoIT):

    Code:
    #include ButtonConstants.au3>
    #include EditConstants.au3>
    #include GUIConstantsEx.au3>
    #include StaticConstants.au3>
    #include WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Калькулятор", 331, 136, 2249, 215)
    $quest = GUICtrlCreateInput("", 144, 24, 169, 21)
    $answer = GUICtrlCreateInput("", 144, 56, 169, 21)
    $Label1 = GUICtrlCreateLabel("Секретный вопрос", 40, 24, 99, 17)
    $Label2 = GUICtrlCreateLabel("Секретный ответ", 48, 56, 91, 17)
    $Calculate = GUICtrlCreateButton("Calculate", 144, 88, 107, 33)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    Case $Calculate
    $a = GUICtrlRead($quest)
    ;Вся суть нашей хитрой защиты
    $b = $a*7-$a*2+$a*3
    GUICtrlSetData($answer, $b)
    EndSwitch
    WEnd​

    В реале это выглядит так. Заходим на наш php-скрипт:

    [​IMG]

    Копируем вопрос (Q), вставляем в программку:

    [​IMG]

    Копируем ответ в php-скрипт, отправляем и теперь только под нашим IP доступна нужная нам папка/файл. Получается в разы быстрее, чем заходить по ftp или ssh.

    (Можно ускорить процесс, используя не программку на AutoIT, а скрипт в GreaseMonkey, который сам будет заполнять поле ответа. Но это вы уже сами...).

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

    (Смекалистый одепт уже понял, что можно использовать при генерации числа-ответа числовые значения дня, недели, месяца, года и т.д. Тогда нельзя будет привязать одно число-ответ к одному числу-вопросу).

    © r00t

Поделиться этой страницей