За последние 24 часа нас посетили 62068 программистов и 1740 роботов. Сейчас ищут 860 программистов ...

защита скрипта нужен совет

Тема в разделе "PHP для новичков", создана пользователем Invision, 2 ноя 2010.

  1. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Есть простой скрипт читает из бд следующее:

    Код (Text):
    1. $query = "SELECT * FROM users WHERE id = 113";
    2. $result = mysql_query($query);
    3. while($row = mysql_fetch_array($result)){
    4.  
    5. $email = $row['email'];
    6.  
    7.  
    8. }
    и выводит все это в tpl шаблон, но как защитить скрипт или тут нечего ломать?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    защищают снаружи, а не изнутри. изнутри уже поздно.
     
  3. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    встречный вопрос, я во всем этом конечно нуб и только учусь, явот работаю с сессиями могу спокойно юзать запрос

    $query = "SELECT * FROM users WHERE id = $_SESSION['id']"; ?
     
  4. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    через куки ведь нельзи никак будет sql inj сделать? ну как нить в сессию добавить ченить ) соре мб тупые вопросы
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Invision
    если ты сам пишешь в сессию что-то свое. а не передаешь извне в нее всякое. Но по уму надо всегда все экранировать :D
     
  6. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    ладно встречный вопрос как сделать когда сессия юзеру записывается при авторизации поставить на нее дату +3600 к примеру в минутах) т.е до какого сделать её активной... А то браузер закрываешь заходишь и снова нужно авторизовываться) обязательно кукисы присваивать? (всм логин и пароль md5 к примеру как в некоторых случаях делаешься)
     
  7. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Invision
    не путаешь случаем куки с сессией?
     
  8. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Путаю!) Вопрос следующий( я нашел способ как реализовать это все, но не могу добавить кукисы( К примеру значение:

    setcookie('user', $login , time() + 2592000);
    setcookie('pswd', $pass , time() + 2592000);


    Куда только это значение не добавлял! Добавил где успешно проходит проверку на авторизацию но почему то кукисы не добавляются (
     
  9. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Реализовал кнопочку проверил через print alert если галку жму то выводится сообщение) значит пашет, добавил параметр установитькукис и все равно не ставится(

    p.s session_start этот параметр включен, не в нем дело?
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Invision
    firebug тебе в помостчь, дорогой товаристчъ

    и не путай людям мозги php с js
    Как ты там алерт принтаешь, покаж-ка.
     
  11. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    ну не принтаю )

    exit ("<script>alert('ололо');</script>");

    я не людям пудрю а разобраться не могу и помощи прошу вот и все.
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Invision
    покаж как ты куки делаешь и теги юзай могучие, дабы обернуть коды всякие в подобающие ббкоды.
     
  13. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Вот кусок для примера:

    Код (Text):
    1. if($_POST['rememberme']=='yes') {
    2. setcookie("username", $_POST['login'], time()+7200);
    3. }
    html:

    Код (Text):
    1. <input type="checkbox" name="rememberme" value="yes">
    не добавляется кукис username.

    P.S Сессия включена. Мб в этом проблема если сессия пашет то кукис не хочет писать?
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Invision
    куки надо ставить пока заголовки не ушли. м?
     
  15. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Что то куда не леплю нифига(

    Вот скрипт авторизации:

    Код (Text):
    1. if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //Присваеваем логину переменную $login, если она пуста уничтожаем её
    2. if (isset($_POST['pass'])) { $pass=$_POST['pass']; if ($pass =='') { unset($pass);} }
    3. //так же присваеваем паролю переменную $pass проверяем....
    4.  
    5. // В общих чертах, или
    6. /*
    7. if (empty($login)) //Проверяем на введенность данных
    8. {
    9. exit ("Не введен логин, исправьте");
    10. }
    11. if (($pass)) //Проверяем на введенность данных
    12. {
    13. exit ("Не введен пароль, исправьте");
    14. }
    15. */
    16. if (empty($login) or empty($pass)) //Проверяем на введенность данных
    17. {
    18. exit ("");
    19. }
    20. //обрезаем всякие тэги и прочую нечисть
    21. $login = stripslashes($login);
    22.  
    23. $login = htmlspecialchars($login);
    24.  
    25. $pass = stripslashes($pass);
    26.  
    27. $pass = htmlspecialchars($pass);
    28.  
    29. //удаляем лишние пробелы
    30. $login = trim($login);
    31. $pass = md5($pass);
    32.  
    33. $result = mysql_query("SELECT * FROM users WHERE login='$login'"); //извлекаем из базы все данные о пользователе с введенным логином
    34. $myrow = mysql_fetch_array($result);
    35. if (empty($myrow['pass']))
    36. {
    37. //если пользователя с введенным логином не существует
    38. exit ("<script>jAlert('Введённый вами логин или пароль неверный.', 'Ошибка авторизации');</script>");
    39. }
    40. else {
    41. //если существует, то сверяем пароли
    42. if ($myrow['pass']==$pass) {
    43.  
    44. //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
    45.  
    46. $_SESSION['login']=$myrow['login'];
    47. $_SESSION['id']=$myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
    48.  
    49. if($_POST['rememberme']=='yes') {
    50. setcookie("username", $_POST['login'], time()+7200);
    51. exit ("<script>alert('ИИхаааааа');</script>");
    52. }
    53.  
    54. echo "<script>setTimeout('location.href=\"index.php\"',0);
    55. </script>";
    56. }
    57. else {
    58. //Если логин и пасс не сходятся
    59. exit ("<script>jAlert('Извините, введённый вами логин или пароль неверный.', 'Ошибка авторизации');</script>");
    60. }
    61. }
    что не так то :(
     
  16. mako

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

    С нами с:
    25 май 2010
    Сообщения:
    5
    Симпатии:
    0
    Покопай в сторону индефикатора сессии, можtn поставь его в ручную...
     
  17. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Invision
    1. Включите показ ошибок
    2. Посмотрите консоль Firebug
    3. Посмотрите логи
    4. http://phpfaq.ru/debug

    mako
    Причем тут идентификатор, если автор хочет куки?
    Смените, пожалуйста, аватару -- по правилам форума разрешены только личные фотографии.