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)/
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)
Ultima modifica di programmazioned : 21-09-2009 alle ore 17.40.48
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...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...
Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?
When you don't know your next step... improvise
ALTERVISTA WANTS YOU!
Vuoi diventare moderatore su AlterVista? Scopri come...
no io vorrei solo fare se qualcuno....
sta cercando di fare un attacco xss o sql injection...
stampi errore in base a quale e<?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 correggo subito il codice, scusatemi
Ultima modifica di nokiagames : 24-09-2009 alle ore 20.50.08
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>
<?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 ^^