jest bezpieczne używać cast (int) zamiast uciekać?
class opinion
{
function loadbyopinionid($opinionid){
$opinionid=(int)$opinionid;
mysql_query("select * from fe_opinion where opinionid=$opinionid");
//more code
}
}
jest bezpieczne używać cast (int) zamiast uciekać?
class opinion
{
function loadbyopinionid($opinionid){
$opinionid=(int)$opinionid;
mysql_query("select * from fe_opinion where opinionid=$opinionid");
//more code
}
}
mysql_real_scape_string jest STRINGS. nie spowoduje, że liczba całkowita będzie "bezpieczna" do użycia. na przykład
$safe = mysql_real_escape_string($_GET['page']);
nie zrobi nic, gdzie
$_GET['page'] = "0 = 0";
bo nie ma metaznaki SQL tam. zapytanie zakończy się coś
SELECT ... WHERE somefield = 0 = 0
jednak robi intval() konwertuje że 0=0
do zwykłego 0
.
Dokładnie.' (int) $ value' jest bezpieczne, ale trzeba pamiętać, że istnieją efekty uboczne, takie jak '(int)" 5abc "=== 5'. Tak więc należy sprawdzić, czy dany ciąg jest * tylko * liczbą, na przykład używając 'ctype_digit()'. – apfelbox
Nie zgodziłbym się ... ponieważ ktoś może przekazywać ciąg znaków, gdy oczekiwano liczby całkowitej ... jest o wiele bezpieczniej używać go ze wszystkimi parametrami. –
Tak to jest bezpieczne, ale należy uciec wartość w zapytaniu ..where opinionid = '$ opinionid'”
BTW (1) Nigdy nie używać SELECT * Rozwiązanie Wybierz pole, Pole2 .. ..
(2) (int) $ foo jest mniejsza perfomanter następnie intval ($ foo)
Jak pamiętam, intval() jest wolniejszy niż (int) (mikro-ulepszenie, które zwykle nie jest warte wysiłku, ponieważ różnica jest niewidoczna dla oka). –
należy używać parametrów. – SLaks
Ponieważ są pozornie nie używając go jako ciąg w kontekście SQL, uciekając go '_escape_string 'nie byłoby użyteczne – mario