2013-07-08 4 views
-1

Безопасен ли этот способ для вставки данных в БД?Избегайте ввода MySQL и XSS

$var = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["address"]), ENT_QUOTES, "ISO-8859-1")); 
+1

no. это не. вы используете устаревшую библиотеку БД. Вы также уничтожаете свои данные специальными шарами/stripslashes. –

+1

Нет «серебряной пули». Но, возможно, одним из наиболее эффективных способов защиты от внедрения SQL является использование подготовленных операторов: http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html – paulsm4

+0

Возможный дубликат [Как предотвратить SQL-инъекцию в PHP?] (Http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php) –

ответ

2

Нет «серебряной пули».

Но, возможно, один из самых эффективных способов для защиты от инъекции SQL, чтобы использовать подготовленные заявления:

http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html

Другой, не менее эффективная защита заключается в использовании самых современных, безопасный API, MySql доступны: либо Mysqli (объектно-ориентированный) или PDO SQL:

http://php.net/manual/en/mysqlinfo.api.choosing.php

Вот ссылка хорошей ссылки о SQL инъекций, и как вы можете снизить риски в вашем МЫСЕ QL код:

http://php.net/manual/en/security.database.sql-injection.php

Два руководящих принципов я настоятельно призываю вас следовать:

1) Вы должны НЕ использовать старый, устаревший MySql API для любого нового кода. Вместо этого используйте MySQLi или PDO.

2) Вы должны NOT разрешить ввод исходного кода в любом месте около оператора SQL. Осторожно проверяйте свои данные и, если это возможно, используйте подготовленные заявления.

IMHO ...

+0

Вопрос был также направлен на XSS, где я бы просто добавил использовать htmlspecialchars при выводе из БД, а не когда вы его вставляете –

Смежные вопросы