sql >> Databáze >  >> RDS >> Mysql

Je použití mysqli_real_escape_string dostatečné k zabezpečení mého řetězce dotazu?

Pokud je všude správně použit real_escape_string, je možnost. Ale zvažte následující kód:

$page = $_GET['page'];
$sql = 'SELECT `name` FROM `user` WHERE `id` = ' . mysqli_real_escape_string($page);

Bezpečné nebo ne? real_escape_řetězec lze použít pouze k escapování řetězců uvnitř uvozovek. $page může být 1 OR id IN (2,3,4,5,6,7,8,9) → žádné uvozovky, žádné skutečné úniky. V tomto případě může pomoci přetypování na správný datový typ (int). Je lepší používat připravená prohlášení, nelze je tak snadno zneužít.




  1. Vrátit všechny řádky z poddotazu SQL?

  2. Jak může být nastavení časového razítka pomalým dotazem?

  3. Převod časového razítka pole datetime z mysql na php

  4. Základní tabulka auditu Oracle Trigger