est (int) $ _ post ['post_id'] code> vraiment sûr? Ne permettra pas d'intégrer des entiers négatifs? P>
5 Réponses :
Il est "sûr", selon ce que vous voulez faire. Il ne permettra que la variable à un entier aussi loin que l'utilisation de la mémoire PHP code> S est concernée. Il permettra des entiers négatifs. P>
L'utilisation de int code> est pour le type
Aspoque Strike> Casting, comme php -r "var_dump( (int) '123d');"
>>> int(123)
php -r "var_dump( (int) '-123d');"
>>> int(-123)
php -r "var_dump( (int) '<script>alert(false)</script>');"
>>> int(0) (xss, no problem)
pour (int) dans PHP:
decimal : [1-9][0-9]* | 0 hexadecimal : 0[xX][0-9a-fA-F]+ octal : 0[0-7]+ binary : 0b[01]+ integer : [+-]?decimal | [+-]?hexadecimal | [+-]?octal | [+-]?binary
En supposant que vous signiez sûr em> en termes de injection SQL em> ou xss attaque em>, alors probablement em> oui. Casting vers un "Sécurité" n'est pas une chose absolue. La chaîne INT code> ne garantit que la valeur est un entier. Un entier n'est pas généralement em> dangereux dans n'importe quel contexte. Cela ne garantit pas la sécurité de la valeur en Integer EM>. Il peut être
0 code>, qui peut avoir ou non une signification particulière dans votre code, par exemple lors de la comparaison de
false code>. Ou il peut être négatif, lequel, à nouveau, peut ne pas avoir d'effets secondaires dans votre code. P>
"1 = 1; Les utilisateurs de table de dépose" code> par lui-même sont jolis coffre-fort em> aussi. Cela dépend du contexte que vous utilisez. Juste la même chose, un
0 code> est parfaitement sûr jusqu'à ce que votre code inclue
si (! $ Numéro de numéro) Supprimerlus (); Code> . P>
C'est très probablement ce que l'OP voulait savoir.
Oui, c'est "sûr" en termes d'injection SQL ou d'attaques XSS.
De plus, si vous utilisez des entiers non signés (aucune valeur négative) pour les clés primaires ou d'autres champs de votre base de données (sauvegarder l'espace), vous devez utiliser la fonction PHP ABS () et la coulée pour éviter les erreurs non confonquées: P> < Pré> xxx pré> p>
Cette question a presque un an. Déjà répondu et accepté. Quel est le point de creuser?
Je sais, mais c'est une réponse améliorée afin que ce ne soit pas important, l'heure de la question initiale à nouveau de la sécurité ces jours-ci!
Il n'y a absolument rien de sécurité
Je pense que nous avons tous une idée de ce que vous entendez par «sûr», mais vous voudrez peut-être clarifier la sécurité pour ce que i>.