Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Безопасность (https://forum.antichat.xyz/forumdisplay.php?f=41)
-   -   Безопастный Php (https://forum.antichat.xyz/showthread.php?t=59969)

truelamer 26.01.2008 11:36

Безопастный Php
 
Скажите пожалуйста как правильно писать с точки зрения безопастности когда принимаешь параматры из пост или гет и обьясните почему:
так...

if(IsSet($_POST[id]))
{
$id=$_POST[id];
if($id)
{
//cod
}
else
{
//cod
}
}

или так

if($POST[id]==1)
{
//code
}
else
{
//code
}

MaDfUn 26.01.2008 12:01

помоему в данной ситуации оба примера одинковые, развечто 2 попроще.

Piflit 26.01.2008 12:07

смотря что ты потом будешь делать с этим параметром

gibson 26.01.2008 12:14

Есть же специальная тема там нельзя было задать это вопрос?
if(IsSet($_POST['id'])) - проверяет установленна или переменная, если да то возвращяет true приводишь к определенному типу $id=$_POST['id']; - числовому, строковому и проверяешь на запрещенные символы.
if($_POST['id']==1) здесь у тебя просто сравнивает с единицей
все зависит от способа фильтрации гет/постов, а не от способа их получения.
Литературу ничего не рекомендую, т.к. видимо ты хрен что поймешь, а перепечатывать их каждый раз влом, задавай вопросы что не понятно.

Kaimi 26.01.2008 17:29

Обработай полученные значения...
http://ru2.php.net/filter

nerezus 27.01.2008 12:42

Цитата:

if($POST[id]==1)
{
Если id не передается в форму POST'ом, то будет ошибка. Поэтому надо проверять ее наличие.

krypt3r 28.01.2008 08:39

Цитата:

if(IsSet($_POST[id]))
{
$id=$_POST[id];
if($id)
{
//cod
}
else
{
//cod
}
}
Если так сделаешь и если переменная $id у тебя скармливается базе данных, то получишь классический вариант SQL-инъекции. Чтобы этого избежать, нужно
PHP код:

$id=$_POST[id]; 

заменить на
PHP код:

$id=mysql_real_escape_string($_POST['id']); 

если база на мускуле. Если PostgreSQL, то вместо mysql_real_escape_string юзай pg_escape_string (ну или addslashes). Если же данные, переданные пользователем скрипту, не передаются в БД, а выводятся на страницу, то можешь получить XSS на странице. Фильтруй так
PHP код:

$id=htmlspecialchars($_POST['id']); 

Вообще по защите php-скриптов на форуме достаточно тем, use search

nerezus 28.01.2008 10:38

krypt3r, это нужно использовать толькоко при добавлении в базу. И то не всегда, т.к. практически любой класс работы с БД имеет свои механизмы для сабжа.


Время: 18:11