webForumDet fria alternativet
Logga in / Bli medlem

Ej tillåta <% eller %> i en textarea

JavaScript

8 svar · 223 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Trådstart#1

Kod:

<script language="javascript">
function check(formobj){
if(formobj.pass1.value.length==0 || formobj.pass1.value != formobj.pass2.value){
alert('Lösenordet måste vara ifyllt och identiskt i båda fälten');
return false;
} else if(formobj.username.value.length==0){
alert('Du måste ange ett användarnamn');
return false;
} else if(formobj.epost.value.indexOf('@')<0){
alert('Du måste ange en e-post adress');
return false;
} else {
return true; 
}
}
</script>

Kan någon lägga till så att det kommer upp en ruta då om textarean innehåller <% eller %> i denna kod?

Medlem sedan juni 20004 308 inlägg
#2

Det ser inte ut som något av fälten i funktionen är textareor, men om vi kallar text-arean "message" så kan du på raden före "} else {" lägga till;

} else if(formobj.message.value.indexOf('<%')>=0 || formobj.message.value.indexOf('%>')>=0){
alert('Du får inte använda <% eller %>');
return false;
Medlem sedan feb. 20011 498 inlägg
#3

Du hade rätt, alla var inte textareor, hade skrivit fel men nu så skriver den bara ut sidan tills koden kommer, resten av sdain skriver den inte ut, varför?

<script language="javascript">
function check(formobj){
if(formobj.pass1.value.length==0 || formobj.pass1.value != formobj.pass2.value){
alert('Lösenordet måste vara ifyllt och identiskt i båda fälten');
return false;
} else if(formobj.username.value.length==0){
alert('Du måste ange ett användarnamn');
return false;
} else if(formobj.text.value.indexOf('<%')>=0 || formobj.text.value.indexOf('%>')>=0){
alert('Du får inte använda <% eller %>');
return false;
} else if(formobj.epost.value.indexOf('@')<0){
alert('Du måste ange en e-post adress');
return false;
} else {
return true; 
}
}
</script>
Medlem sedan feb. 20011 498 inlägg
#4

Ursprungligen av ampy Du hade rätt, alla var inte textareor, hade skrivit fel men nu så skriver den bara ut sidan tills koden kommer, resten av sdain skriver den inte ut, varför?

<script language="javascript">
function check(formobj){
if(formobj.pass1.value.length==0 || formobj.pass1.value != formobj.pass2.value){
alert('Lösenordet måste vara ifyllt och identiskt i båda fälten');
return false;
} else if(formobj.username.value.length==0){
alert('Du måste ange ett användarnamn');
return false;
} else if(formobj.text.value.indexOf('<%')>=0 || formobj.text.value.indexOf('%>')>=0){
alert('Du får inte använda <% eller %>');
return false;
} else if(formobj.epost.value.indexOf('@')<0){
alert('Du måste ange en e-post adress');
return false;
} else {
return true; 
}
}
</script>
Medlem sedan feb. 20011 498 inlägg
#5

Oj, skulle redigera meddelandet men råkade citera det, sorry.

Medlem sedan mars 20015 287 inlägg
#6

glöm det, jag svammlar säkert bara...

Medlem sedan sep. 2001269 inlägg
#7

Finns det ite risk att servern tolkar det som står mellan <% och %> som asp-kod.

Då kladdar den ju sönder din kod §jr

Om du kör filen som asp-fil, kan du inte köra den som html-fil?
Annars kanske man kan stänga av det på nåt annat sätt...

Medlem sedan juni 20004 308 inlägg
#8

Jovisst, det ät sant. Är det en html-sida är det inga problem, är det asp däremot får det bli så här;

Först;
var foo = '<'+'%'; var bar = '%'+'>';

och sedan;

} else if(formobj.message.value.indexOf(foo)>=0 || formobj.message.value.indexOf(bar)>=0){
alert('Du får inte använda '+foo+' eller '+bar);
return false;

Medlem sedan juli 20013 378 inlägg
#9

Om någon matar in text i ditt formulär och har Javascript avslaget i sin webbläsare, kan denne fortfarande mata in <% och %> i dina textareor och få detta skickat till servern vid submit på formuläret.
Den enda säkra lösningen för att försäkra sig att användaren inte lyckas spara text i något felaktigt format (eller som i detta fall några oönskade teckensekvenser) som denne matat in i ett formulär är att se till att all inmatad text även kontrolleras av den serverside- (t.ex. asp- eller php-) kod som tar emot formulärinnehållet.

266 ms totalt · 4 externa anrop · v20260731065814-full.81e7e81c
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)