Ciao dovrei intercettare quando uno scrive
ad esempio
o qualsiasi cosa che inizi per < e termini per >Codice PHP:<script>
alert("ciao");
</script>
sono riuscito a fare questo
Codice PHP:/^(a-zA-Z0-9)+(a-zA-Z0-9)+(a-zA-Z0-9)/
Printable View
Ciao dovrei intercettare quando uno scrive
ad esempio
o qualsiasi cosa che inizi per < e termini per >Codice PHP:<script>
alert("ciao");
</script>
sono riuscito a fare questo
Codice PHP:/^(a-zA-Z0-9)+(a-zA-Z0-9)+(a-zA-Z0-9)/
A cosa ti serve? Te lo chiedo perchè potrebbero esserci funzioni che ti risparmierebbero il lavoro, tipo strip_tags().
Per l'espressione regolare, comunque, .* sta ad indicare qualsiasi cosa, tranne il newline.
Puoi aggiungere \n ai caratteri riconosciuti attraverso il modificatore di criterio s:
Ciao!Codice PHP:preg_match('#<(.*)>#s', $stringa, $trovati)
questo e il codice che sto usando
dovrei controllare i valori sia via post e get in caso che si trova una cosa delCodice PHP:<?php
$controllo="(\<(/?[^\>]+)\>)";
foreach($_GET as $key => $value){
if($_GET[$key] == $controllo){
die("Errore Via Get…");
}}
foreach($_POST as $key => $value){
if($_POST[$key] == $controllo){
die("Errore Via Post…");
}}
echo "ciao";
?>
genere
dovrebbe stampare errore pero non funziona...:wink:Codice PHP:<script>
alert("ciao");
</script>
Non ti funziona perchè non è in quel modo che si usano le espressioni regolari: preg_match().
Ciao!Codice PHP:if(preg_match($controllo, $_GET[$key])){
P.S: Invece di fare un foreach su $_GET e $_POST, potresti operare sulla stringa restituita da implode() ;)
mi potresti postare come secondo te deve essere per vedere se qualcuno non sta cercando di fare un attacco via xss e SQL injection
sia via post che get..^^
ragazzi con ce più il tasto edit..
sapete darmi una mano ho provato ma niente...
Non è che ci sia una risposta, perché molto dipende da come stai strutturando il tuo script.
La regola generale è: prima di stampare qualsiasi cosa ti venga dall'esterno (sulla quale non hai controllo), devi controllare i dati.
Ti possono essere utili due funzioncine PHP:
- htmlentities (traduce i tag HTML in modo da visualizzarli sullo schermo, senza che questi abbiano effetto)
- mysql_real_escape_string (traduce le stringhe in modo che tu le possa usare in modo sicuro nella scrittura di una query)
Naturalmente, per utilizzarle devi avvolgere i tuoi oggetti "sospetti" prima di utilizzarli per concatenarli al resto del codice HTML o della query che ti serve...
Stammi bene...
no io vorrei solo fare se qualcuno....
sta cercando di fare un attacco xss o sql injection...
stampi errore in base a quale eCitazione:
<?php
$controllo="(\<(/?[^\>]+)\>)";
foreach($_GET as $key => $value){
if($_GET[$key] == $controllo){
die("Errore Via Get…");
}}
foreach($_POST as $key => $value){
if($_POST[$key] == $controllo){
die("Errore Via Post…");
}}
echo "ciao";
?>
pensi sia possibile
E' possibile, ma se fai finta di non aver capito quello scritto da programmazioned...
Non ho provato comunque sia dovrebbe funzionareCodice PHP:<?php
$controllo="/(\<(/?[^\>]+)\>)/i";
foreach($_GET as $key => $value){
if(preg_match($controllo, $_GET[$key]){
die("Errore Via Get…");
}}
foreach($_POST as $key => $value){
if(preg_match($controllo, $_GET[$key]){
die("Errore Via Post…");
}}
echo "ciao";
?>
P.s. Che brutto errore :shock: correggo subito il codice, scusatemi :|
non non avevo capito bene
errore lo da lo stesso anche se metto
isa.php?ssa
invece io voglio che da errore solo se usa
i caratteri
< >
tipo
<script>
Citazione:
<?php
$controllo="/(\<(/?[^\>]+)\>)/i";
foreach($_GET as $key => $value){
if(!preg_match($controllo, $_GET[$key])){
die("Errore Via Get…");
}}
foreach($_POST as $key => $value){
if(!preg_match($controllo, $_POST[$key])){
die("Errore Via Post…");
}}
echo "ciao";
?>
Togli i ! davanti a preg_match.
Ciao!
ho provato ma non funziona...
non mi da errore get ^^