Безопасность скрипта (инъекции)

.snif

Новичок
Безопасность скрипта (инъекции)

Вобщем я задумался о безопасности, а в часности об мускуль инъекции. Вот к примеру мой скрипт с регистрацией:
PHP:
<html>
<head>
<title>PHP</title>
</head>
<body bgcolor="gray" text="white">
<br />
<form action="" method="post" align="center">
<pre>
<b>Имя: </b>            <input type="text" name="name" size="10"><br />
<b>Логин: </b>          <input type="text" name="user" size="10"><br />
<b>E-mail: </b>         <input type="text" name="email" size="10"><br />
<b>ICQ: </b>            <input type="text" name="icq" size="10"><br />
<b>Пароль: </b>         <input type="password" name="pass1" size="10"><br />
<b>Повторите пароль:</b><input type="password" name="pass2" size="10"><br />
<input type="submit" value="Регистрация">
</pre>
</form>
</body>
</html>
<?php
$name = $_POST['name'];
$user = $_POST['user'];
$icq = $_POST['icq'];
$email = $_POST['email'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];
if ($pass1 != $pass2){
	echo "<center><b><font color=red>Введённые пароли не совпадают</font></b></center>";
} else {
	if (isset ($name) AND ($user) AND ($pass1) AND ($pass2) AND ($email)){
		$link = mysql_connect("localhost", "root", "");
		mysql_select_db("reg");
		if (@mysql_query("INSERT INTO `gb` (name, user, pass, icq, email) VALUES ('$name', '$user', '$pass1', $icq, '$email')")){
			
	echo "<center><b><font color=green>Регистрация успешно завершена</font></b></center>";
	} else {
		echo "<center><b><font color=red>Ошибка ригестрации</font></b></center>";
	}	
		}
	}
	mysql_close($link);
В этом скрипте есть уязвиммосте и тут можно спокойно сделать инъекцию. Я слышал что дл ятого что-бы этого не произошло нужно фильтровать символы (' * / и т.д.) Собственно сам вопрос:
Как фильтровать эти символы? И как ещё можно обезопаситься от инъекций?
 

.snif

Новичок
это типо для всего так прописать? ($pass1, $pass2, $icq)? (Спасибо кстатати)
А есть ещё смособы защиты?
 

Фанат

oncle terrible
Команда форума
да, для всех
только mysql_connect надо писать до этого.

в этом запросе больше никаких способов не нужно.
В других могут потребоваться другие способы.
подробнее можно прочесть здесь: http://phpfaq.ru/slashes
 

.snif

Новичок
*****
ааа, а то я пишу $name = mysql_real_escape_string($_POST['name']); а потом конект и он мн еошибку выдаёт. Ну тоесть вот для такой простенькой регистрации сойдёт и это?
 

Фанат

oncle terrible
Команда форума
не "сойдет и это", а единственное, что нужно для защиты данных от инъекции. любых данных. при любой регистрации.
еще вопросы остались?
 

Фанат

oncle terrible
Команда форума
не понимаю, о какой авторизации ты говоришь.
то, что тебе написали, нужно делать, помещая данные в SQL запрос
ты это понимаешь? какие-то еще вопросы еще остались?
 

no_santa

Снегур
по опыту взломов.... если вы ручками не будете отслеживать все паттерны инъекций.... сломаем.

;)

-~{}~ 07.12.08 23:20:

забыл.... их еще надо обновлять периодически, да еще не забудь компильнуть скрипт зендом или т.п., перед тем, как заливать на сервер. А то все-равно сломаем!
 

nerezus

Вселенский отказник
no_santa
> отслеживать
последователь учений PHP М. Фленова?

> забыл.... их еще надо обновлять периодически, да еще не забудь компильнуть скрипт зендом или т.п., перед тем, как заливать на сервер. А то все-равно сломаем!
бла бла бла ))
 
Сверху