/ / PHP str_replace bypass - php, str-replace

PHP str_replace bypass - php, str-replace

Sono preoccupato per l'uso sicuro della funzione str_replace. PER ESEMPIO.

$var = "abcdeefghij";
$var = str_replace("ee", "", $var); // Should be "abcdfghij"

È possibile bypassare (ottenere "abcdeefghij" - con 2 "e" lettere), ad esempio con charset multibyte o carattere null?

MODIFICARE: Stavo pensando a qualcosa di simile: abcd% 6565fghij% 6565 sarebbe stato sostituito da ee ma str_replace non funzionerebbe perché è una stringa multibyte (mb_str_replace).

risposte:

2 per risposta № 1

In effetti, se ee non si verifica nella stringa esattamente in questo modo, il che significa che in una codifica compatibile e senza caratteri invisibili aggiuntivi, non ha corrispondenza. Per quanto riguarda le codifiche compatibili, ee nel tuo codice sorgente è probabile ASCII, quindi qualsiasi ASCIIla codifica compatibile funzionerà (incluse le letture Latin-1, utf-8 e maggior parte dei byte singoli). Se ci sono altri caratteri / byte nel mezzo, ovviamente non è la stessa stringa e non combacia. Ovviamente anche altri personaggi simili non hanno eguagliato.


3 per risposta № 2

¿Sıɥʇ ǝʞı ן uɐǝɯ no⅄

sì, potrebbe essere possibile "iniettare" un carattere "e" inserendo un carattere Unicode sembra piace e ma è diverso. Quel pericolo è sempre lì, nessuno potrebbe mai essere in grado di rilevare qualunque personaggio che assomiglia a "e".

E 'impossibile dire se questo è un problema reale, anche se non sai cosa stai cercando di fare. Di solito, questo non dovrebbe essere rilevante per la sicurezza. Forse fornire qualche background in più?