Уязвимость с ошибкой MySQL - PullRequest
       6

Уязвимость с ошибкой MySQL

0 голосов
/ 28 декабря 2011

Я понятия не имею о безопасности PHP, но если я добавлю ' к input в моем POST методе form.

Я получаю следующее сообщение:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /usr/local/www/login.php

Это инъекция SQL? Если да, то как это может быть использовано "хакерами"?

Ответы [ 2 ]

4 голосов
/ 28 декабря 2011

Это означает, что вы уязвимы для внедрения SQL-кода, и ваш код не выполняет достаточной проверки на наличие ошибок.

Абсолютно «безопасным» битом кода будет:

<?php
... connect to db ...
$stringval = mysql_real_escape_string($_GET['param']);
$sql = "SELECT somefield FROM sometable WHERE otherfield='$stringval'";
$result = mysql_query($sql) or die(mysql_error());

еще лучше перестать использовать функции mysql и переключиться на PDO и параметризованные запросы. Они автоматически решают проблемы с впрыском.

Основной причиной вашего сообщения об ошибке является то, что ваш запрос вызвал синтаксическую ошибку. Когда запрос сразу же завершается таким образом, mysql_query() возвращает логическое значение FALSE, а не дескриптор оператора.

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

0 голосов
/ 28 декабря 2011

Вы должны экранировать любой пользовательский ввод, прежде чем передавать его в mysql.Используйте функцию PHP mysql_real_escape_string(), чтобы экранировать любой пользовательский ввод перед добавлением его в свой запрос.Вот ссылка на руководство по PHP для mysql_real_escape_string ()

Обновление : Да, то, что другие говорят об использовании подготовленных операторов или mysqli, намного лучше, чем использование mysqlрасширение.

Вот несколько ссылок на MySQL Injection, которые я нашел:

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