|
|
|
| Добрый день!
Объясните, как сделать лучше.
У меня около 40-50 полей для заполнения.
Необходимо их проверить с помощью функции htmlspecialchars и stripslashes
Теперь вопрос, мне так делать для каждого поля?
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
И еще 48 полей точно также делать?
А нельзя допустим как-то сократить эту проверку?
И что посоветуету, какой может другой функицией проверять.
Просто JavaScript проверяет все супер, но не во всех браузерах. | |
|
|
|
|
|
|
|
для: Ванек2010
(19.01.2010 в 15:12)
| | >Необходимо их проверить с помощью функции htmlspecialchars и stripslashes
Разве эти функции что-то проверяют? | |
|
|
|
|
|
|
|
для: sim5
(19.01.2010 в 15:30)
| | Ну тоесть я хотел сказать, чтобы не могли всякие коды писать.
Вроде как защищающая функция... | |
|
|
|
|
|
|
|
для: Ванек2010
(19.01.2010 в 15:35)
| | не зная ПДД и не умея водить мотоцикл защищающий шлем вам вряд ли поможет... | |
|
|
|
|
|
|
|
для: GeorgeIV
(19.01.2010 в 15:37)
| | >не зная ПДД и не умея водить мотоцикл защищающий шлем вам вряд ли поможет...
Прикольное предложение получилось :)
Я сначала понял так:
Если шлем не знает ПДД и не умеет водить мотоцикл, то он и не поможет :)))))))))))))))) | |
|
|
|
|
|
|
|
для: GeorgeIV
(19.01.2010 в 15:37)
| | А чем еще можно защититься? | |
|
|
|
|
|
|
|
для: sim5
(19.01.2010 в 15:30)
| | Ну тоесть я хотел сказать, чтобы не могли всякие коды писать.
Вроде как защищающая функция... | |
|
|
|
|
|
|
|
для: Ванек2010
(19.01.2010 в 15:12)
| | :)
$login = stripslashes(htmlspecialchars($login)); | |
|
|
|
|
|
|
|
для: tvv123456
(19.01.2010 в 15:36)
| | А нельзя
stripslashes(htmlspecialchars($login,$password,$a,$b,$с и т.д.));
Так нельзя?) | |
|
|
|
|
|
|
|
для: Ванек2010
(19.01.2010 в 15:41)
| | Попробуйте | |
|
|
|
|
|
|
|
для: Ванек2010
(19.01.2010 в 15:41)
| | >А чем еще можно защититься?
Сомтря от чего. Вы в инете поищите какие угрозы есть там и найдете способы защиты от них | |
|
|
|
|
|
|
|
для: tvv123456
(19.01.2010 в 15:45)
| | Ну после курса Евгения Попова, я понял, что поля надо защищать вот этими функциями... и обрезать еще можно пробелы с помощью trim :D | |
|
|
|
|
|
|
|
для: Ванек2010
(19.01.2010 в 15:47)
| | Его курсы расчитаны, чисто на новичков. Нельзя ограничеваться только ими. Нужно просто сесть за инет и разобраться зачем и что делает он в своих уроках, а потом взять книгу и почитать.
Эти курсы больше готовят людей к изучению php нежели являються источником качественных знаний
А еще вам наверное это будет полезно для начала :) http://ru.wikipedia.org/wiki/SQL_injection | |
|
|
|
|
|
|
|
для: tvv123456
(20.01.2010 в 04:03)
| | Спасибо, очень полезная статья!
Я вот не понял куда имеено вставлять в sql запрос вот эти функции
$result = mysql_query("SELECT * FROM news WHERE id='$id'",$db);
|
mysql_escape_string, mysql_real_escape_string, addslashes
|
| |
|
|
|
|
|
|
|
для: Ванек2010
(22.01.2010 в 22:07)
| | их в запрос вставлять не надо, этими функциями надо обрабатывать данные, которые подставляются в запрос для отправки в базу.
вот небольшой пример из мануала, как один из способов обработки данных
<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());
// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
?>
|
числовые данные можно обработать функцией intval(); | |
|
|
|
|
|
|
|
для: Slo_Nik
(22.01.2010 в 23:41)
| | > числовые данные можно обработать функцией intval();
И при этом, если они ну никак не должны быть равны нулю, проверять на ноль - зачем хлам в бд?
И потом, зачем так:
<?php
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
|
По-моему, понимать проще так:
<?php
$user = mysql_real_escape_string($user);
$password = mysql_real_escape_string($password);
$query = "SELECT * FROM users WHERE user = '$user' AND password = '$password'";
|
| |
|
|
|
|
|
|
|
для: neadekvat
(22.01.2010 в 23:47)
| | >как один из способов обработки данных | |
|
|
|
|
|
|
|
для: neadekvat
(22.01.2010 в 23:47)
| | Cпасибо, не че не знал про это..
2 способ по легче, т.е. neadekvata | |
|
|
|
|
|
|
|
для: Ванек2010
(23.01.2010 в 00:06)
| | http://phpfaq.ru/ вот ещё ссылка | |
|
|
|
|
|
|
|
для: neadekvat
(22.01.2010 в 23:47)
| | >И потом, зачем так:
>$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
> mysql_real_escape_string($user),
> mysql_real_escape_string($password));
>По-моему, понимать проще так:
>$user = mysql_real_escape_string($user);
>$password = mysql_real_escape_string($password);
>$query = "SELECT * FROM users WHERE user = '$user' AND password = '$password'";
Эти два фрагмента не являются эквивалентными.
И логически более корректен именно первый. Он не разрушает значений переменных.
а понимать... по-моему, одинаково. | |
|
|
|
|
|
|
|
для: Trianon
(23.01.2010 в 00:26)
| | >Он не разрушает значений переменных.
можно поподробней? как второй вариант может "разрушать" значение переменных? | |
|
|
|
|
|
|
|
для: Trianon
(23.01.2010 в 00:26)
| | > Он не разрушает значений переменных.
В данной конкретной ситуации - согласен.
Но мне, например, частенько приходится проводить какие-то проверки, запросы и т.д. еще до подставления в запрос. И поэтому проще получается сразу обработать данные (при условии, конечно, что повторно их выводить уже не надо будет в ходе работы скрипта) | |
|
|
|