Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: AJAX PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
IncOness
Отправлено: 16 Октября, 2015 - 21:14:36
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Пытаюсь забанить пользователя через AJAX PHP, но почему-то не получается...

CODE (javascript):
скопировать код в буфер обмена
  1. function sendLC() {
  2.     var payment_code = '685656653669646254982596';
  3.     var confirm = confirm('Вы действительно хотите совершить покупку?');
  4.     if(confirm == false) return false;
  5.     if(getSec != payment_code) {
  6.     $(document).ready(function() {
  7.         var bansUser = <? echo $_SESSION['username']; ?>;
  8.         var bansTime = 86400;
  9.         var bansReason = 'Причина';
  10.         $.ajax({
  11.                 type: "POST",
  12.                 url: "ban.php",
  13.                 data: { user: bansUser, time: bansTime, reason: bansReason },
  14.                 success: function(data){
  15.                         alert('Вы забанены.');
  16.                     }
  17.             });
  18.         });
  19.     }
  20. }

PHP:
скопировать код в буфер обмена
  1. <?
  2.         include_once("db.php");
  3.         if(isset($_POST["user"]) && isset($_POST["time"]) && isset($_POST["reason"]))
  4.         {
  5.                 $user = $_POST["user"]; $time = $_POST["time"]; $reason = $_POST["reason"];
  6.                 $date = time(); $unban = $date + $time;
  7.                 if($result = mysqli_query($connect, "INSERT INTO `bans` (`username`, `moderator`, `date`, `unbantime`, `reason`) VALUES ('$user', 'System', '$date', '$unban', '$reason')"))
  8.                 {
  9.                         mysql_close($connection);
  10.                 }
  11.                 else
  12.                 {
  13.                         header('HTTP/1.1 500 Looks like mysql error, could not insert record!');
  14.                         exit();
  15.                 }
  16.         }
  17.         else
  18.         {
  19.                 header('HTTP/1.1 500 Error occurred, Could not process request!');
  20.                 exit();
  21.         }
  22. ?>

(Отредактировано автором: 16 Октября, 2015 - 21:17:27)

 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Октября, 2015 - 21:41:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




IncOness пишет:
var bansUser = <? echo $_SESSION['username']; ?>;

Да чо уж там -- давай сразу пароли от хостинга выкладывай.
IncOness пишет:
var bansTime = 86400;
Т.е. ты даешь мне право выбрать срок моего бана? Не вопрос -- 1 секунда меня устроит.
IncOness пишет:
HTTP/1.1 500
Ага, иди почитай для чего какие заголовки нужны.
IncOness пишет:
success: function(data)
Сакцесс только на 200 ОК отработает.
IncOness пишет:
VALUES ('$user', 'System', '$date', '$unban', '$reason')"

IncOness пишет:
mysqli
Во, инъекция. Хочу быть модератором, прямо сейчас, с баном оканчивающимся через секунду.
Ну или можно админа разжаловать до простого пользака.
 
 Top
IncOness
Отправлено: 16 Октября, 2015 - 21:56:02
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




DeepVarvar пишет:
Да чо уж там -- давай сразу пароли от хостинга выкладывай.

Чем данный код плох?
DeepVarvar пишет:
Во, инъекция. Хочу быть модератором, прямо сейчас, с баном оканчивающимся через секунду.
Ну или можно админа разжаловать до простого пользака.

Можно поподробнее? Слышал, что хакеры могут использовать SQL инъекции, только так и не разобрался в этом деле.
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Октября, 2015 - 22:02:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




IncOness пишет:
плох?
Плох. Ты светишь данные.
IncOness пишет:
подробнее
Это на целую статью. Мне лень. Просто поверь на слово -- твой код сейчас это одна большая черная вонючая дыра для инъекций.
Решение? Подготовленные запросы (prepared statement).
 
 Top
IncOness
Отправлено: 16 Октября, 2015 - 22:12:30
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




DeepVarvar пишет:
Плох. Ты светишь данные.

Но ведь пользователь в конечном итоге в исходном коде увидит сам логин: Admin, User и т.д., а не сам код. Чем уж это так плохо?
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Октября, 2015 - 22:50:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Тем, что при желании это может увидеть не только сам пользователь.
Опять же -- без подробностей, ато на статью тянет.

Ну, а про время бана ты не заметил что-ли?
 
 Top
IncOness
Отправлено: 16 Октября, 2015 - 23:08:44
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




DeepVarvar пишет:
Тем, что при желании это может увидеть не только сам пользователь.
Опять же -- без подробностей, ато на статью тянет.

Ну, а про время бана ты не заметил что-ли?

Ну а каким вообще образом, в какой форме это может увидеть не только пользователь? Просто другого варианта для подобного взаимодествия с PHP я найти не могу.

С временем бана заметил, я знаю, что при желании пользователь может подделать переменную, но тут у меня возникает 2 вопроса:
1. Я пытался через F12 в браузере подделать переменную, но в итоге скрипт все равно срабатывал как нужно, даже если переменная не совпадала с условием. Как тогда это возможно?
2. Можно ли с этим как-то бороться, или это бесполезно, поскольку это клиентаская часть? Или как бы по-другому спросить, возможно есть какой-то другой вариант?
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Октября, 2015 - 23:49:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ессно -- все расчеты проводить на бекенде.
А синковать все это дело кукой/сессией c каким-нить значением.

Короче -- думай всегнда как параноик. Если не веришь что так думать надо -- посмотри сколько дыр нашли в популярных цмс.
(Добавление)
IncOness пишет:
каким вообще образом
Даже если ты исправишь SQL-инъекцию, то я воткну тебе туда скрипт или тег с атрибутом, который не только подсмотрит пользака, но и стырит куки тебя, админа, просматривающего статистику банов пользаков. Т.е. я стырив куки подставлю их к себе и буду тобой -- суперадмином.
 
 Top
IncOness
Отправлено: 17 Октября, 2015 - 00:29:37
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




DeepVarvar пишет:
Ессно -- все расчеты проводить на бекенде.

В смысле на сервере?
DeepVarvar пишет:
Даже если ты исправишь SQL-инъекцию, то я воткну тебе туда скрипт или тег с атрибутом, который не только подсмотрит пользака, но и стырит куки тебя, админа, просматривающего статистику банов пользаков. Т.е. я стырив куки подставлю их к себе и буду тобой -- суперадмином.

Все данные пользователей хранятся в сессиях, поскольку это серверная часть, не думаю, что все настолько просто. Это не куки, которые можно без проблем своровать...
(Добавление)
DeepVarvar пишет:
DeepVarvar

Если было бы все, как Вы говорите, думаю уже большая часть сайтов, которые работают с бд, лежали бы уже давным-давно, от таких вот хакеров...
(Добавление)
По поводу банов: нашел наиболее хорошее рабочее решение, как мне кажется.
XMLHttpRequest
 
 Top
Faraon-san
Отправлено: 17 Октября, 2015 - 01:01:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013  


Помог: 8 раз(а)




Код плохой, дыр много, данный зачем передавать в Ajax запросе вообще не понимаю, данные полученные не фильтруются и не экранируются ни как. Беда короче.
 
 Top
IncOness
Отправлено: 17 Октября, 2015 - 01:11:58
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Faraon-san пишет:
Код плохой, дыр много, данный зачем передавать в Ajax запросе вообще не понимаю, данные полученные не фильтруются и не экранируются ни как. Беда короче.

Вы можете говорить конкретнее, что именно не так? Я уже просто запутался в этом всем окончательно... Как устранить дыру со SQL инъекциями я уже ознакомился, что еще не так в общем?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB