Итак, у меня много проблем с подготовленными заявлениями. Я провел много исследований и все еще не могу полностью понять все ...MySQL Подготовлено заявление путаницы
Я действительно чувствую, что мне нужно понять Подготовленные утверждения, потому что я как раз собирался выпустить несколько новых бесплатных API на моем сайте (которые требуют API-интерфейса для выполнения API), но я недавно понял, насколько все это небезопасно .... Я просто могу использовать SQL-инъекцию для обхода проверки API-ключа, например 'OR'1'='1
Вот как я проверить API Key:
$apikey = $_GET['key'];
$sql = "SELECT * FROM `table` WHERE `key` = '$apikey'";
$query = mysqli_query($con, $sql);
if($query)
{
$fetchrow = mysqli_fetch_row($query);
if(isset($fetchrow[0]))
{
echo "API Key is valid!";
}
else
{
echo "API KEY is invalid";
}
}
И, как упоминалось выше, это можно легко обойти, выполнив свой API, как этот
http://website.com/api.php?key='OR'1'='1
Это действительно испугало меня в первый, но то я сделал некоторые исследования и научился хорошо предотвращать любую форму SQL-инъекции, чтобы использовать подготовленную инструкцию, поэтому я провел много исследований, и мне это просто кажется довольно сложным:/
Итак, я думаю, мой вопрос в том, как я могу взять мой код выше и заставить его работать одинаково с помощью подготовленных операторов?
Безопасность не из подготовленных операторов, а из использования привязки параметров. См. Http://bobby-tables.com/php.html, например, код. –
Возможный дубликат [Как предотвратить SQL-инъекцию в PHP?] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –
@ AlexanderO'Mara lol ...... Может быть, прочитайте чей-то вопрос, прежде чем сказать, что это возможный дубликат .................. – JeffCoderr