Безопасен ли этот способ для вставки данных в БД?Избегайте ввода MySQL и XSS
$var = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["address"]), ENT_QUOTES, "ISO-8859-1"));
Безопасен ли этот способ для вставки данных в БД?Избегайте ввода MySQL и XSS
$var = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["address"]), ENT_QUOTES, "ISO-8859-1"));
Нет «серебряной пули».
Но, возможно, один из самых эффективных способов для защиты от инъекции 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 ...
Вопрос был также направлен на XSS, где я бы просто добавил использовать htmlspecialchars при выводе из БД, а не когда вы его вставляете –
no. это не. вы используете устаревшую библиотеку БД. Вы также уничтожаете свои данные специальными шарами/stripslashes. –
Нет «серебряной пули». Но, возможно, одним из наиболее эффективных способов защиты от внедрения SQL является использование подготовленных операторов: http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html – paulsm4
Возможный дубликат [Как предотвратить SQL-инъекцию в PHP?] (Http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php) –