ФорумПрограммированиеPHP для идиотов → вопрос по безопастности.

вопрос по безопастности.

  • hilton_413

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 23 августа 2010 г. 18:47

    Всем привет.

    Вопрос по поводу безопасности т.к начитался что не правильно написанный ajax может привести к большой проблеме… так вот собственно убился на все выходные сделать вывод менюшки из MySQL, средвствами ajax…
    Мой "гавноКод" как все ща скажут работает, но я очень маловато понимаю в безопасности…

    может кто то добавит исправления, добавления, коменты….

    <?php
    $id = $_POST['id'];
    if ($id == 1)
    {
    include_once 'sql.php'; //MySQL connenect
    }
    else
    {
    // А если id != 1, то что ?
    }

    $result = mysql_query("SELECT * FROM menu WHERE class='subMenu'",$connection);
    $fetch_aray = mysql_fetch_array($result);
    $numrows = mysql_num_rows($result);


    if ($numrows >= 1)//БД цыкл вывод.
    {
    while($numrows–)
    {
    printf
    ("<li class='subMenu'><a href='http://%s' class='subLink'>%s</a></li>
    ",$fetch_aray['a'],$fetch_aray['name'] );
    $fetch_aray = mysql_fetch_array($result);
    }
    }else
    {
    // да нихуя Ёпть !
    }
    ?>



    <?php echo "
    <script type='text/javascript'>
    $(document).ready(function(){// Hello World
    $('#load').hide(); // Прачем ПреЛоад
    $('#link').click( // Клик
    function(){
    $('#load').show(); // грузим прилоад и показываем.
    $.ajax({global:false}); // тупой не разберется
    $('#load').ajaxStart(function(){ $(this).show();
    });
    $('#load').ajaxStop(function(){ // Все заебок прячем картинку/текст прелодера
    $(this).hide();
    });
    $.post( //hello POST
    'test.php', // ПОЛёТ на УРЛ
    {

    //переменые для POST полета !!!
    id:'1',
    },

    showPHP); // return varibles
    function showPHP(data){
    $('.box').html(data) // ВЫВОД
    }; //showPHP
    });//клик fn
    }); //HEPPY END !!;
    </script>
    ";
    ?>


    <style type="text/css">
    #blockDiv {background: #FFCC99; width: 300px; height: 150px;}
    #div {background: red; width: 300px; height: 150px;}
    #phptester {background:#000000; width: 300px; height: 350px; color:white}
    </style>
    <?php include_once 'test2.php'?> // JS скрипт в PHP обертке.
    <body>

    <div id="blockDiv">
    <ul id="ul">

    <li><a href='#' id="link">AJAX it! 2</a><br /></li>
    <li id="load">Loading…</li>
    <li class="box"></li>
    <a href="http://www.ya.ru">ya.ru</a>


    </ul>
    </div>

    </body>
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 24 августа 2010 г. 1:17, спустя 6 часов 30 минут 4 секунды

    Я не проснуля еще или ты айди не используешь??
  • hilton_413

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 24 августа 2010 г. 1:29, спустя 12 минут 16 секунд

    Наверно не проснулся… :), или я всю ночь просидел что и не придумал куда id прилипить.

    насамом деле id есть, но вот пользы от него я к сожалению не увидел….
    {
    //переменые для POST полета !!!
    id:'1',
    },

  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 24 августа 2010 г. 1:36, спустя 6 минут 36 секунд

    hilton_413, не, ну жбаскриптом то оно ушло.
    Даже в скрипт пришло. А дальше то че?
    Спустя 197 сек.
    То есть организовал ты закрытую вечеринку. Пригласил туд народ. Проверяешь ты их всех, чтоб оружие не притащили, бомбу. Короче безопастность. И тут ты вспомнил, что есть такой чувак айди и решил завалится и проверить, а нет ли у него дома пистолета? Пхуй что его на вечеринки (читай в скрипте) нету.
  • hilton_413

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 24 августа 2010 г. 1:50, спустя 14 минут 43 секунды

    мдаа…
    ты хочешь сказать что вот это ID=1…
    как пьянь подзаборная только "POST"-ом за пивом ходить может, да приетом его гопота может заваль без труда …




  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 24 августа 2010 г. 1:52, спустя 1 минуту 48 секунд

    я вообще вас не понимаю, спецы по безопасности )
    adw/0
  • hilton_413

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 24 августа 2010 г. 1:53, спустя 1 минуту 9 секунд

    SpartakuS,
    тогда как же… мне защетить мою Пьянь и Вечеринку от наркотических "Инекций" ?
    Спустя 19 сек.
    и от прочрго гавна…
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 24 августа 2010 г. 2:00, спустя 6 минут 42 секунды

    hilton_413, нужно все посетителейпеременные кто заходит на вечеринку в sql запрос экранировать и проверять.
    Спустя 35 сек.
    adw0rd, и че конкретно ты у меня не понимаешь?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 24 августа 2010 г. 2:09, спустя 8 минут 39 секунд


    adw0rd, и че конкретно ты у меня не понимаешь?
    вообще все, вы говорите на албанско-гоповском языке каком-то
    adw/0
  • hilton_413

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 24 августа 2010 г. 2:10, спустя 1 минуту 16 секунд

    SpartakuS ,
    а, может от нее вообще избавится или она без еще хуже

    экранировать и проверять -> поделись опытом как это возможно или … ?
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 24 августа 2010 г. 2:14, спустя 3 минуты 54 секунды

    hilton_413, почитай про mysql_real_escape_string
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 24 августа 2010 г. 2:32, спустя 18 минут 19 секунд

    hilton_413, раз меня эдво упрекнул в непонятнсти - обьясню нормально.
    У тебя может быть два вида дырок.
    1) sql-inj
    То есть в твой sql запрос кто то что то подставит и изменит его.
    $result = mysql_query("SELECT * FROM menu WHERE class='subMenu'",$connection);

    Тут у тебя никто ничего не может полставить потому, что запрос постоянный. Тут нет переменных.
    Другое дело, если бы ты его изменил так:
    $result = mysql_query("SELECT * FROM menu WHERE class='subMenu' AND `id` = {$_POST['id']}",$connection);

    Тогда в пост кто то мог пдставить 1 OR 1=1 и получил бы всю табличку. Но эт не особо страшно. Он мог бы залезть и в другие твои таблицы. Например юзеров.
    А ты просто проверяешь id и больше его не используешь. Зачем тебе id?
    Обычно эта проблема решается экранированием специальных символов в текстовых переменных (смотри предыдущий пост Костыля) или [man]intval[/man] для числовых.
    2) xss в них я мало понимаю. Но вобще подменив какую то переменную хакер может подставить свой javascript.
    По-моему такая проблемма решается функцией [man]htmlspecialchars[/man]. Тебе нужно прогнать через нее все переменые, которые ты выводишь, но к которым в теории может иметь доступ злумышленник.
             ("<li class='subMenu'><a href='http://%s' class='subLink'>%s</a></li>
    ",$fetch_aray['a'],$fetch_aray['name'] );

    $fetch_aray['a'],$fetch_aray['name'] их
  • hilton_413

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 1 сентября 2010 г. 7:59, спустя 8 дней 5 часов 26 минут

    Я так понел что все никто ничего добавить не хочет ( не может )…
    :)
    Да и на этом Всем Спасибо…

    но на фоне этого скрипта, IntetExp ну ни как не хочет работать с $.POST



    ___________________________________________________________
    как все всегда "Лиса Поёт и не ХРОМает" —> FireFox Opera Ghrome….
    Спустя 137 сек.

    InterExplorer пишет…
    Сведения об ошибке на веб-странице

    Сообщение: Предполагается наличие идентификатора, строки или числа
    Строка: 39
    Символ: 13
    Код: 0


  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 1 сентября 2010 г. 8:39, спустя 40 минут 28 секунд

    олол
    Спустя 12 сек.
    ставь дебагер под ие и ищи ошибку
    Сапожник без сапог
  • felix90

    Сообщения: 191 Репутация: N Группа: Адекваты

    Spritz 1 сентября 2010 г. 20:18, спустя 11 часов 38 минут 28 секунд

    То есть организовал ты закрытую вечеринку. Пригласил туд народ. Проверяешь ты их всех, чтоб оружие не притащили, бомбу. Короче безопастность. И тут ты вспомнил, что есть такой чувак айди и решил завалится и проверить, а нет ли у него дома пистолета? Пхуй что его на вечеринки (читай в скрипте) нету.

    вообще все, вы говорите на албанско-гоповском языке каком-то
    (с)
    Спустя 22 сек.
    А какой смысл от айди, если он не динамичен?
    Спустя 124 сек.
    Или я что-то не то понял? :)

    ЗЫ Лень было читать всё)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!