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

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

  • hilton_413

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

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

    Всем привет.

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

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

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

    $result = mysql_query(&quot;SELECT * FROM menu WHERE class=&#39;subMenu&#39;&quot;,$connection);
    $fetch_aray = mysql_fetch_array($result);
    $numrows = mysql_num_rows($result);


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



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

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

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


    <style type=&quot;text/css&quot;>
    #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 &#39;test2.php&#39;?> // JS скрипт в PHP обертке.
    <body>

    <div id=&quot;blockDiv&quot;>
    <ul id=&quot;ul&quot;>

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


    </ul>
    </div>

    </body>
  • VaseninM

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

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

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

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

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

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

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

  • VaseninM

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

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

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

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

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

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




  • adw0rd

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

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

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

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

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

    SpartakuS,
    тогда как же… мне защетить мою Пьянь и Вечеринку от наркотических &quot;Инекций&quot; ?
    {+++19+++} и от прочрго гавна…
  • VaseninM

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

    $fetch_aray[&#39;a&#39;],$fetch_aray[&#39;name&#39;] их
  • hilton_413

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

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

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

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



    ___________________________________________________________
    как все всегда &quot;Лиса Поёт и не ХРОМает&quot; —> FireFox Opera Ghrome…. {+++137+++}
    InterExplorer пишет…
    Сведения об ошибке на веб-странице

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


  • phpdude

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

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

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

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

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

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

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

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

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