ФорумПрограммированиеPHP для идиотов → Кароче сканер говорит что в моей скуле код)

Кароче сканер говорит что в моей скуле код)

  • YaNakuren

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

    Spritz 7 ноября 2016 г. 7:50

    <?php
        // Страница авторизации
    
        # Функция для генерации случайной строки
    
        function generateCode($length=6) {
    
            $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
    
            $code = "";
    
            $clen = strlen($chars) - 1;
            while (strlen($code) < $length) {
    
                $code .= $chars[mt_rand(0,$clen)];
            }
    
            return $code;
    
        }
    
         $login = htmlspecialchars( strip_tags($_POST['login']));
         $pw = htmlspecialchars( strip_tags($_POST['password']));
        //echo md5(md5($_POST['password']));
        # Соединямся с БД
       // echo $_POST['login'];
        require_once '../include/config.php';
    
        if(isset($_POST['login']) && isset($_POST['password']))
    
        {
    
            # Вытаскиваем из БД запись, у которой логин равняеться введенному
            //WHERE user_login='".$login."' LIMIT 1
    
            $mysqli = new mysqli($config['server'],  $config['user_db'], $config['password_db'], $config['db_name']);
            $query = $mysqli->query("SELECT id, user_password, role FROM users WHERE user_login='".$login."' LIMIT 1");
    
            $data = mysqli_fetch_assoc($query);
    
            //var_dump($query);
    
            # Соавниваем пароли
    
            if($data['user_password'] === md5(md5($pw)))
    
            {
    
                # Генерируем случайное число и шифруем его
    
                $hash = md5(generateCode(10));
    
    
    
                if(!@$_POST['not_attach_ip'])
    
                {
    
                    # Если пользователя выбрал привязку к IP
    
                    # Переводим IP в строку
    
                    $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
    
                }
    
    
    
                # Записываем в БД новый хеш авторизации и IP
    
                $mysqli->query("UPDATE users SET user_hash='".$hash."' ".$insip." WHERE id='".$data['id']."'");
                    $mysqli->close();
    
    
                # Ставим куки
                session_start();
                $_SESSION["id"] =  $data['id'];
                $_SESSION["hash"] =  $hash;
                $_SESSION["user_role"] = $data['role'];
                $_POST['user_role']= $data['role'];
                session_write_close();
                echo json_encode(array('key'=>'true','role'=>$data['role']));
                # Переадресовываем браузер на страницу проверки нашего скрипта
    
    
            }
    
            else
    
            {
                    $mysqli->close();
                echo json_encode(array('key'=>'false','error'=>'Вы ввели неправильный логин/пароль'));
    
            }
    
        }
    
        ?>

    $login = htmlspecialchars( strip_tags($_POST['login']));
    $pw = htmlspecialchars( strip_tags($_POST['password']));

    Акунекстис говорит что тут BlindSQL
    Возвращается такая ошибка

    <b>Warning</b>: strip_tags() expects parameter 1 to be string, array given in <b>/home/multishare/public_html/ajax/login.php</b> on line <b>22</b><br />

    Скажите это лыжи не едут или мне лучше не программиировать больше?

  • phpdude

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

    Spritz 7 ноября 2016 г. 9:02, спустя 1 час 12 минут 42 секунды

    LOL )

    Сапожник без сапог
  • YaNakuren

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

    Spritz 7 ноября 2016 г. 9:39, спустя 36 минут 31 секунду

    Бля ну а че делать я понимаю что там прямым текстом написанно что strip_tags принимает только строку а у меня там массив нарисовался, что делать то что все ЛОЛ я и так понимаю, старичок)

  • YaNakuren

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

    Spritz 7 ноября 2016 г. 9:58, спустя 18 минут 53 секунды

    Использование strip_tags() после htmlspecialchars() бессмысленно, поскольку последняя экранирует теги. Я понял что я Дич вопросов нет больше

  • YaNakuren

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

    Spritz 7 ноября 2016 г. 10:34, спустя 36 минут 4 секунды

    И вот нахуя я делаю так

    if(isset($_POST['login']) && isset($_POST['password'])) когда сделал так

    $login = htmlspecialchars( strip_tags($_POST['login']));
    $pw = htmlspecialchars( strip_tags($_POST['password']));

    если нада так

    if(isset($login])&& isset($pw)) кто нибудь заминусуйте меня в щи 
  • Nek

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

    Spritz 7 ноября 2016 г. 10:48, спустя 14 минут 32 секунды

    <b>Warning</b>: strip_tags() expects parameter 1 to be string, array given in <b>/home/multishare/public_html/ajax/login.php</b> on line <b>22</b><br />
    Бля ну а че делать я понимаю что там прямым текстом написанно что strip_tags принимает только строку а у меня там массив нарисовался, что делать то что все ЛОЛ я и так понимаю, старичок)

    @YaNakuren, перед строкой 22 можно сделать var_dump($_POST['login']) и посмотреть, какое значение имеет соотв. параметр. Вестимо, массив будет.
    А вообще можно пользовать prepared statements, кои есть в mysqli, и забыть про strip_tags, htmlspecialchars, etc.

  • AlexB

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

    Spritz 7 ноября 2016 г. 11:28, спустя 39 минут 41 секунду

    @YaNakuren, форму html-ную покажи, которую ты постишь

  • phpdude

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

    Spritz 7 ноября 2016 г. 11:57, спустя 28 минут 54 секунды

    @YaNakuren, форму html-ную покажи, которую ты постишь

    @AlexB, можно показать что выведет var_dump($_POST); если его вставить в строчку до той где ошибка. Ну и strip_tags / htmlspecialchars это плохой тон для экранирования символов для конкатенации в sql запросе

    Сапожник без сапог
  • AlexB

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

    Spritz 7 ноября 2016 г. 11:59, спустя 2 минуты 7 секунд

    @AlexB, можно показать что выведет var_dump($_POST); если его вставить в строчку до той где ошибка.

    @phpdude, конечно можно. Но будет вопрос: "Почему так?" ))))))))))

  • phpdude

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

    Spritz 7 ноября 2016 г. 12:49, спустя 50 минут 2 секунды

    @AlexB, можно показать что выведет var_dump($_POST); если его вставить в строчку до той где ошибка.

    @phpdude, конечно можно. Но будет вопрос: "Почему так?" ))))))))))

    @AlexB, ну почему так из параметров все прозаично)

    Сапожник без сапог
  • AlexB

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

    Spritz 8 ноября 2016 г. 1:05, спустя 12 часов 16 минут 19 секунд

    А че за тема последнее время - задать вопрос и съебаться?

  • phpdude

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

    Spritz 8 ноября 2016 г. 1:23, спустя 17 минут 25 секунд

    А че за тема последнее время - задать вопрос и съебаться?

    @AlexB, так ответ получен можно и уебывать

    Сапожник без сапог
  • YaNakuren

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

    Spritz 8 ноября 2016 г. 2:00, спустя 37 минут 8 секунд

    Да не я прсото переписывал щас не жалуется на скулю) Всем спасибо пацаны но нашел другую проблему

    <?php
    
        $link = str_replace('/','',$_SERVER['REQUEST_URI']);
        //echo $link;
        require_once 'config.php';
    
        $mysqli = new mysqli($config['server'],  $config['user_db'], $config['password_db'], $config['db_name']);
             $mysqli->set_charset("utf8");
        $query = $mysqli->query("SELECT * FROM upload WHERE link='".$link."' LIMIT 1");
    
        $mysqli->close();
        $data = mysqli_fetch_assoc($query);
    
        if(empty($data)){
            require_once './404_part.html';
        }
        else{
            //var_dump($data);
           ?>

    PS phpdude и Саша Б можете оставить тут свой биткойн кошелек скину чуток на пивас)

    оно выводит из бд картирку в таком виде хуяксру/kakapappspalallakskkalslasklakslaikkasas

    Если к запросу добавить '

    хуяксру/kakapappspalallakskkalslasklakslaikkasas' то получим

    Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /home/путя/public_html/include/download.php on line 12

    Почему он ругается на кавычку?

  • Crank

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

    Spritz 8 ноября 2016 г. 2:23, спустя 22 минуты 41 секунду

    @YaNakuren, по тому что у тебя получается классический случай SQL инъекции, оч рекомендую почитать что это такое и как бороться.

  • YaNakuren

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

    Spritz 8 ноября 2016 г. 2:30, спустя 6 минут 51 секунду

    Все все я разобрался! не нужно меня пинать я только учусь

    Кому обещал на пивас жду бит кошельки в студию

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