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 :: Вставить переменные в JS
<a style="cursor:pointer;" onClick="mtgox_pay(this)" >Pay using Bitcoins!</a> ';
}
else
{
echo'something wrong!';
}
}
?>
JustUserR
Отправлено: 30 Июля, 2010 - 15:46:12
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
vadim2 пишет:
Подскажите, что делаю не так :
Вероятно интерполируемые вами строки содержат определенные спецсимволы например двойные кавычки или обратный слеш - так как вы не производите дополнительного экранирования то они получаются на одном и том же уровня в JS-кодом - и соответственно могу вызывать синтаксическую ошибку в нем Кроме того такая прямая интерполяция POST-значения может привести не только к синтаксической ошибке - но и достаточно заметному эксплойту поскольку имеется возможность вставить любой HTML-код в страницу
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Реф
Отправлено: 01 Августа, 2010 - 06:10:41
Частый гость
Покинул форум
Сообщений всего: 159
Дата рег-ции: Июль 2010 Откуда: Реутов, Россия
Помог: 0 раз(а)
PHP регистрозависимый язык, поэтому массивы $_get, $_gET и $_GET - разные массивы. В Вашем случае нужно использовать $_GET
----- Думать надо головой, а не головкой!
JustUserR
Отправлено: 01 Августа, 2010 - 13:23:58
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Реф пишет:
PHP регистрозависимый язык, поэтому массивы $_get, $_gET и $_GET - разные массивы. В Вашем случае нужно использовать $_GET
В любом случае первым делом необходимо прокэкранировать интерполируемую в исходный JS-код переменную $_POST['amount'] - без этого PHP-скрипт подвержен не только возможной XSS-уязвимости но и при подстановки неправильных значений может попросту не работать vadim2 Даже если ваша форма на HTML-странице которая совершает POST-запрос имеет проверку вводимых данных с помощью специального JS-скрипта - то вы должны учитывать что передать данные обрабатывающему PHP-скрипту можно передать из поддельной форму или попросту через telnet
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Реф
Отправлено: 01 Августа, 2010 - 15:58:30
Частый гость
Покинул форум
Сообщений всего: 159
Дата рег-ции: Июль 2010 Откуда: Реутов, Россия
Помог: 0 раз(а)
JustUserR
Это тоже верно, но в ту часть, где происходит формирвоание JS не попасть. Условие $_get['page']=='pay' всегда будет возвращать ложь.
----- Думать надо головой, а не головкой!
DeepVarvar
Отправлено: 01 Августа, 2010 - 16:40:57
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Реф пишет:
JustUserR Это тоже верно, но в ту часть, где происходит формирвоание JS не попасть. Условие $_get['page']=='pay' всегда будет возвращать ложь
Да при использовании конкретной реализации PHP-скрипта приведеная уязвимость не будет представлять опасности для web-сайта - поскольку дейтсвительно секция PHP-скрипта в которой она располагается не может быть выбрана Тем не менее найденные ошибки и уязвимости лучше исправлять сразу при обнаружении - поскольку если например в данном PHP-скрипте исправить условие отвечающее за выбор выводимых секций - то сразу же появляется опасность взлома web-сайта которую достаточно просто обнаружить Дейтсивтельно при POST-запросе соответствующий секции данного PHP-скрипта и передаче в него параметров по аналогии с оригинальной формой - можно легко обраружить что в JS-скрипт напрямую интерполируется значение параметра $_POST['amount'] даже без обычного обрамления в один уровень кавычек Поэтому в данную переменную достаточно передать значение типа " } \n CODE \n mtgoxOptions= {merchID: mtgoxOptions.merchID, amount: "somevalue - и это дает возможность исполнять на генерируемой HTML-страница абсолютно любой JS-код которые следует расположить в указанной позиции - при этом из-за сохраненя уровня вложенности кавычек и экранирования с ним даже не нужно выполнять никакие дополнительные преобразования DeepVarvar Приведенные вами вариант PHP-скрипта также содержит указанную уязвимость - которая также при передаче неправильных параметров может приводить к синтаксической ошибка в JS-скрипте Для решения этой проблемы стоит произвести escape- и HTML-экранирование переменной $_POST['amount'] - причем второй вид экранирования также нужен для защиты от ввода соответствующего завершающего HTML-тега наличие которого также приведет к синтаксической ошибке
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.