Является ли php сайт только с использованием mysql SELECT безопасным от SQL инъекций - PullRequest
2 голосов
/ 24 февраля 2012

У меня есть сайт, который использует базу данных для хранения информации для пользователей сайта. Все вызовы mysql db SELECT. Я использую $_GET для передачи переменных со страницы на страницу, которые затем используются в вызовах mysql SELECT. Я не использую UPDATE или INSERT ни в одном из моих кодов.

Должен ли я беспокоиться об атаках с использованием SQL-инъекций? Нужно ли защищать БД от атак другого типа?

Я готов читать и учиться. Я просто не знаю, нужно ли это в этом случае.

Все мои запросы к БД имеют вид:

$leadstory = "-1";
if (isset($_GET['leadstory'])) {
  $leadstory = $_GET['leadstory'];
}

$query_News = "SELECT * FROM news WHERE lead_story = $leadstory";
$News = mysql_query($query_News, $HDAdave) or die(mysql_error());
$row_News = mysql_fetch_assoc($News);
$totalRows_News = mysql_num_rows($News);

Первые три строки заменены на:

$statement = $db_connection->prepare("SELECT * FROM news WHERE lead_story = ?;';");
$statement->bind_param("s", $leadstory);
$statement->execute();
$row_News = $statement->fetchAll();

Какая замена для $ totalRows_News?

Должен ли я также очистить историю свинца?

Спасибо за вашу помощь.

Ответы [ 3 ]

7 голосов
/ 24 февраля 2012

Exploits of a Mom (XKCD)

Это было бы "да", я думаю.

SELECT * FROM users WHERE name='hacker' or name='Admin' and '1'='1'

С указанным именем hacker' or name='Admin' and '1'='1

3 голосов
/ 24 февраля 2012

Да, вам нужно беспокоиться об атаках SQL-инъекций.

Используйте PDO и подготовленные операторы для защиты ваших запросов.

$stmt = $pdo->prepare('SELECT * FROM table WHERE id = ?');
$stmt->bindParam(1, $_GET['id']);
$stmt->execute();

$rows = $stmt->fetchAll();
0 голосов
/ 24 февраля 2012

Простой ответ, да. Если какая-либо часть вашего оператора sql основана на запросе или отправке клиентом формы, вам необходимо санировать / экранировать его.

Использовать PDO и подготовленные заявления или mysql_real_escape_string()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...