![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
m1kle |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 2.5.2007 Где: Москва, Россия Репутация: нет Всего: нет |
Теоретически возможно ли взломать такой скрипт:
$a=$_POST['a']; echo $a; |
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
Теоретически даже <?php ?> можно взломать. Проверяй регулярными выражениями, приводи к типам. Вообще научись задавать правильно вопросы
|
|||
|
||||
m1kle |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 2.5.2007 Где: Москва, Россия Репутация: нет Всего: нет |
awers, ты прав, вопросы формулирую я фигово.
Переформулирую: Что нужно учесть при работе с переменными. На что нужно их проверять, в том числе при работе с базами данных. |
|||
|
||||
Canarat |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 11.3.2008 Где: Каспий Репутация: 5 Всего: 5 |
m1kle, зависит от того, что происходит с этой переменной.
Зависит от конкретной задачи. Сначала переменная приводится к типу, с которым работает приложение(например $var всегда int), а потом проверяется на возможное вхождение неправильных символов. Обычно, для всяких идентификаторов достаточно (int)$variable. |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Canarat, пункт два, вообще-то, если под словом "подключается" имеется в виду include, вообще не имеет смысла. В том плане, что если не должно быть РНР кода, то и подключать ничего не нужно.
Пункт один лучше переформулировать по-другому. Ни за какими символами следить не надо. А надо выполнять два правила 1. Переданные скрипту данные оформлять в соответствии с синаксисом SQL 2. В случае, если динамически формируются управляющие конструкции запроса, то подставлять их только из заранее прописанных в скрипте. m1kle, вопрос все еще "фигово сформулирован", увы. "При работе с переменными" ничего учитывать не надо. Сами по себе переменные никакой угрозы не несут. В каждом конкретном случае защита осуществляется по-разному. Про SQL я уже написал. подробнее можно прочесть здесь PHP FAQ: \"Кавычки \". Cоставление запросов, слеши, SQL Injection если передается что-то, что будет использоваться в качестве имени файла, следует использовать регулярное выражение или функцию basename() |
|||
|
||||
Canarat |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 11.3.2008 Где: Каспий Репутация: 5 Всего: 5 |
Feldmarschall, собственно про SQL, я все-таки склоняюсь к более абстрактному и общему взгляду на этот пункт. Неправильно сформулировал:
Никакие посторонние данные не имеют возможности изменить вид SQL-запроса А насчет подключения, я лично правил скрипт где был подобный код:
и я не думаю, что это какой-то особый случай у начинающих PHP-программистов. |
|||
|
||||
Sannis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.8.2007 Где: Москва Репутация: 6 Всего: 13 |
Дык не только у них. Многие шаблонизаторы используют eval при генерации или подключении шаблонов, что от инклюда не сильно отличается. И по хорошему тоже нужно проверять, не вставил ли дизайнер в шаблон чего-то, что может привести к нежелательным последствиям. -------------------- |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Sannis, по-хорошему, шаблонизатор не должан использоать eval.
Canarat, "более абстрактный и общий взгляд" не дает никаких практических рекомендаций по защите, и даже намеков на них. И, следовательно - бесполезен. По поводу же приведенного кода, опять же - надо исправлять причину, а не следствие. то есть, бить по рукам тому, кто так пишет. |
|||
|
||||
Canarat |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 11.3.2008 Где: Каспий Репутация: 5 Всего: 5 |
Feldmarschall, каюсь, я привел теорию, но не привел практику. От общего к частному, дедукция, Ватсон.
А насчет этого кода - то что исправлять надо причину это очевидно, но когда есть код в приложении, для которого ты пишешь модуль - сильно не развернёшься. Ещё раз - существуют ситуации, когда напыщенность типа "я не буду работать с таким паттерном, ибо он не соответствует моим религиозным воззрениям" будет только вредить, и поэтому придется подстраиваться. |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
ошибки надо не называть паттернами, а исправлять
|
|||
|
||||
Canarat |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 11.3.2008 Где: Каспий Репутация: 5 Всего: 5 |
Feldmarschall, если кому-то не нравится Singleton или Factory - их надо удалить? Здесь я подразумевал именно паттерны, и субъективное отношение к ним.
|
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
а если мы, допустим закачиваем файлик (статью уже в готовом html-е), а затем подключаем её? |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Не понял смысла вопроса.
Ты спрашиваешь, можно ли вывести в браузер файл, не используя оператор include? |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
нет, допустим контентщик составляет страничку у себя, потом её закачивает через <input type="file", а страничка затем инклудится.
что-то типа ленты новостей, но более красочно (замена скриптам, типа fckeditor) по факту такая система существует, всё равно же надо проверять, здесь код php может быть введён напрямую без всяких ухищрений |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Я не погу понять.
То ли ты думаешь, что include интерпретирует HTML код, то ли не знаешь о функции fopen или readfile |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |