Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Безопасность в PHP 
:(
    Опции темы
m1kle
Дата 22.3.2008, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 2.5.2007
Где: Москва, Россия

Репутация: нет
Всего: нет



Теоретически возможно ли взломать такой скрипт:

$a=$_POST['a'];
echo $a;
PM MAIL WWW MSN   Вверх
awers
Дата 22.3.2008, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



Теоретически даже <?php ?> можно взломать. Проверяй регулярными выражениями, приводи к типам. Вообще научись задавать правильно вопросы
PM MAIL WWW ICQ Skype   Вверх
m1kle
Дата 22.3.2008, 04:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 2.5.2007
Где: Москва, Россия

Репутация: нет
Всего: нет



awers, ты прав, вопросы формулирую я фигово.

Переформулирую: Что нужно учесть при работе с переменными.

На что нужно их проверять, в том числе при работе с базами данных.
PM MAIL WWW MSN   Вверх
Canarat
Дата 22.3.2008, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 11.3.2008
Где: Каспий

Репутация: 5
Всего: 5



m1kle, зависит от того, что происходит с этой переменной.
  • SQL-запрос: предусмотреть, чтобы переданные в этой переменной символы не могли изменить исходный вид SQL-запроса.
  • Запись в файл: если файл впоследствии подключается, проверять чтобы не было возможности записать в файл произвольный PHP-код.
  • Отображение в HTML-коде: удалять теги, способные нарушить верстку или внедрить скрипты в HTML-код страницы.

Зависит от конкретной задачи. Сначала переменная приводится к типу, с которым работает приложение(например $var всегда int), а потом проверяется на возможное вхождение неправильных символов.
Обычно, для всяких идентификаторов достаточно (int)$variable.
PM MAIL   Вверх
Feldmarschall
Дата 22.3.2008, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Canarat, пункт два, вообще-то, если под словом "подключается" имеется в виду include, вообще не имеет смысла. В том плане, что если не должно быть РНР кода, то и подключать ничего не нужно. 
Пункт один лучше переформулировать по-другому. Ни за какими символами следить не надо. А надо выполнять два правила
1. Переданные скрипту данные оформлять в соответствии с синаксисом SQL
2. В случае, если динамически формируются управляющие конструкции запроса, то подставлять их только из заранее прописанных в скрипте.

m1kle, вопрос все еще "фигово сформулирован", увы.
"При работе с переменными" ничего учитывать не надо. Сами по себе переменные никакой угрозы не несут. 
В каждом конкретном случае защита осуществляется по-разному.
Про SQL я уже написал. подробнее можно прочесть здесь PHP FAQ:  \"Кавычки \". Cоставление запросов, слеши, SQL Injection
если передается что-то, что будет использоваться в качестве имени файла, следует использовать регулярное выражение или функцию basename()
PM   Вверх
Canarat
Дата 22.3.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 11.3.2008
Где: Каспий

Репутация: 5
Всего: 5



Feldmarschall, собственно про SQL, я все-таки склоняюсь к более абстрактному и общему взгляду на этот пункт. Неправильно сформулировал:
Никакие посторонние данные не имеют возможности изменить вид SQL-запроса

А насчет подключения, я лично правил скрипт где был подобный код:
Код

<?php
if(!empty($_GET['link'])){
$fp=fopen('mylinks.txt',"a");
fwrite($fp,$_GET['link']."<br>");
fclose($fp);
}
include("mylinks.txt");
?>

и я не думаю, что это какой-то особый случай у начинающих PHP-программистов.
PM MAIL   Вверх
Sannis
Дата 22.3.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.8.2007
Где: Москва

Репутация: 6
Всего: 13



Цитата(Canarat @  22.3.2008,  14:00 Найти цитируемый пост)
и я не думаю, что это какой-то особый случай у начинающих PHP-программистов.

Дык не только у них. Многие шаблонизаторы используют eval при генерации или подключении шаблонов, что от инклюда не сильно отличается. И по хорошему тоже нужно проверять, не вставил ли дизайнер в шаблон чего-то, что может привести к нежелательным последствиям.



--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
Feldmarschall
Дата 22.3.2008, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Sannis, по-хорошему, шаблонизатор не должан использоать eval.

Canarat, "более абстрактный и общий взгляд" не дает никаких практических рекомендаций по защите, и даже намеков на них. И, следовательно - бесполезен.

По поводу же приведенного кода, опять же - надо исправлять причину, а не следствие. то есть, бить по рукам тому, кто так пишет.

PM   Вверх
Canarat
Дата 22.3.2008, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 11.3.2008
Где: Каспий

Репутация: 5
Всего: 5



Feldmarschall, каюсь, я привел теорию, но не привел практику. От общего к частному, дедукция, Ватсон.

А насчет этого кода - то что исправлять надо причину это очевидно, но когда есть код в приложении, для которого ты пишешь модуль - сильно не развернёшься.

Ещё раз - существуют ситуации, когда напыщенность типа "я не буду работать с таким паттерном, ибо он не соответствует моим религиозным воззрениям" будет только вредить, и поэтому придется подстраиваться.
PM MAIL   Вверх
Feldmarschall
Дата 22.3.2008, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



ошибки надо не называть паттернами, а исправлять
PM   Вверх
Canarat
Дата 22.3.2008, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 11.3.2008
Где: Каспий

Репутация: 5
Всего: 5



Feldmarschall, если кому-то не нравится Singleton или Factory - их надо удалить? Здесь я подразумевал именно паттерны, и субъективное отношение к ним.
PM MAIL   Вверх
bars80080
Дата 24.3.2008, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Feldmarschall @  22.3.2008,  08:46 Найти цитируемый пост)
Canarat, пункт два, вообще-то, если под словом "подключается" имеется в виду include, вообще не имеет смысла. В том плане, что если не должно быть РНР кода, то и подключать ничего не нужно

а если мы, допустим закачиваем файлик (статью уже в готовом html-е), а затем подключаем её?
PM MAIL WWW   Вверх
Feldmarschall
Дата 24.3.2008, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Не понял смысла вопроса.
Ты спрашиваешь, можно ли вывести в браузер файл, не используя оператор include?
PM   Вверх
bars80080
Дата 24.3.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



нет, допустим контентщик составляет страничку у себя, потом её закачивает через <input type="file", а страничка затем инклудится.
что-то типа ленты новостей, но более красочно (замена скриптам, типа fckeditor)

по факту такая система существует, всё равно же надо проверять, здесь код php может быть введён напрямую без всяких ухищрений
PM MAIL WWW   Вверх
Feldmarschall
Дата 24.3.2008, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Я не погу понять.
То ли ты думаешь, что include интерпретирует HTML код, то ли не знаешь о функции fopen или readfile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1126 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.