10. februar 2006 - 18:25Der er
27 kommentarer og 1 løsning
Hvordan undgår vi at blive hacket igen
Vi har en side med en gæstebog som er blevet hacket af en eller anden person. Det har helt sikkert noget med en hvis profet og hans billeder. Men anyway de indsætter noget kode som gør at gæstebogen åbner en anden side.
Jeg kan ikke forhindre at de sætter noget html ind da gæstebogen skal have mulighed for det. Det er noget med bannerbyt. Jeg kan selvfølgelig lave noget IP filtrering men på loggen kan jeg se at de bare prøver med andre ip nr.
koden ser sådan ud (Misbrug det nu ikke)
<s t y l e o n l o a d="d o c u m e n t.b o d y.i n n e r H T M L='<i f r a m e s c r o l l i n g=n o f r a m e b o r d e r=0 w id th=100% he ig ht=100% s r c =h t t p :// w w w.n u k e d x .c o m/fuckdenmark.htm>< / i f r a m e>' ; " >
samme kode gentager sig med body onload
Bemærk jeg har sat spaces ind Sitet er programmeret i asp
Hvad gør jeg for at forhindre "ondsindede" i at lægge sitet ned
Hvorfor i alverden skal brugere kunne indsætte HTML-elementer. Det er da at tigge og bede om den slags 'punk'!
Det kan du ikke gøre noget for at undgå, bortset fra af holde et realistisk sikkerhedsniveau ... hvilket naturligvis betyder, at brugere ikke ukritisk må kunne indsætte HTML-elementer
Jamen, den har jeg jo skitseret: Hold et realistisk sikkerhedsniveau :)
For det første skal _al_ brugerinput naturligvis checkes i hoved og røv - og du må sikre dig, inputtet er i det format, du forventer. Hvis du insisterer på, at brugere skal kunne indsætte et billede, skal du således _kun_ tillade, der bliver indsat img-tags. Er der andre tags, skal inputtet/indlægget øjeblikkelig kasseres
Hmm jeg må have overset den bog. Men du behøver ikke være så arogant. jeg har selvfølgelig lavet noget med replace. For mig virker det som det nemmeste. Men jeg vil gerne undgå at der komer andre lignende tiltag. Så derfor andre ( og ikke dig Olebole - jeg tror ikke du kan bidrage med noget ) hvad gør man for at forhindre i fremtiden.
*LoL* Jamen, det er da helt dit valg, hvis du vælger at se mit indlæg som udslag af arrogance :D
Hvis du i stedet var lidt mindre selvhøjtidelig, kunne du sikkert lære en del af det, jeg skrev. Det er helt essentielt at checke al brugerinput og sikre dig, det stemmer overens med det, der forventes. Det er, hvad alle andre gør - og er det, andre formodentlig også vil anbefale. Men bevares ... valget er som sagt dit =)
Du bruger nok en database ACEESE eller SQL Du kan lave en kontro inden brugern kan tilføj sin tekst Ekspemtel if InStr(1,"styleonload", DateLine , 1) Then Sping over så den ikke bliver tilføjet i din database.
Nej nej godt ord igen. Men at checke for at der er img tags og ellers strippe alt andet htm virker for mig at være overkill. Det er kun en gæstebog hvor man manuelt kan gå ind og slette upassende indlæg. Det kunne jeg måske også finde en løsning på. Det jeg efterlyser er en nemmere måde. Og min udbyders sikkerhedsniveau er helt i top.
clausbr's forslag løser ikke dit problem, som skrevet i din titel: "Hvordan undgår vi at blive hacket igen". Der er kun een vej. Ok, den er blevet skrevet før: Du skal tjekke al input fra brugerne. Første skridt er at definere, hvad der er lovligt input. Gider du gøre det, så kan det ikke være så svært ;)
Problemet er blot, at mulighederne for at genere i den slags fora er utallige, hvis man ukritisk tillader brug af HTML. Du vil formodentlig altid halse efter kreative punks - og ende med bunker af forskellige ting, du skal filtrere fra. Det værste er, at listen kun vokser, hvergang du bliver offer for en ny type angreb.
Det er 100 gange lettere at nøjes med at tillade visse tags - og på forudbestemte måder - og forbyde alle andre. Det er den måde, det løses på i professionelt kodede systemer ... og ikke uden grund :)
Jeg bruger denne løsning til at have flere domains på min server jeg har lige nu 1650 sub-domain og de skal jo vidersends til de forskælige mapper som ligger på min server.
jeg bruger også denne løsning til når der bliver upload filer til min server vis der er mp3 zip AVI osv. så bliver der sendt en mail til mig om oplysningen af filen og hvem der har upload den.
Eksempel.:
inden brugen kan tilføj noget i din gæstebog Hvis ordet Stylronload eller noget andet bliver fundet i Request.Form("tekst") så kan den springe tilføjs over eller gå til response.Redirect ("stop.asp")
if InStr(1,"styleonload", Request.Form("tekst") , 1) Then response.Redirect ("stop.asp")
Du kan blive ved med at tilføj ord eksempel (Svin gris osv) så hvis nogle kommer for at svinde din gæstebog til er der begræsninger for udtryk de kan bruge.
Det er stadig at stå på hovedet. Hvad er lettest: 1) Nævn de ting, du ikke kan bruge en hammer til 2) Nævn de ting, du kan bruge en hammer til
Hvad er lettest: 1) Forbyd alle de ting, der kan genere dit forum. Forbyd også de ting, du ikke i din vildeste fantasi kan forstille dig kan genere 2) Tillad de ting, der er nødvendige for, man kan bruge dit forum som tiltænkt - og kun dem
Ja men for mig virker det lidt uoverskueligt at skulle angive i et <textarea> hvad der må stå og hvordan bestemmer man lige at der godt må stå et <img> ? Det kan jeg ikke lige se
Det skal du ikke gøre i et textarea. Alt hvad du viser i browseren kan manipuleres med lidt javascript i adresselinjen. Man kan indsætte ekstra felter i formen og ændre værdien i hidden-fields - ligesom man kan ændre de JavaScripts, der måtte stå i dokumentet. Der ligger ingen sikkerhed i, hvad du foretager i dokumentet i browseren. Al den slags skal checkes ved ankomsten til serveren. Her det så, du skal tillade, hvad der må gøres - i stedet for at forbyde, hvad der ikke må foretages.
Hvis du nogensinde har haft børn, vil du vide, det er meget lettere at definere, hvad de må, end hvad de ikke må. Det sidste kræver en ualmindelig frodig fantasi ;D
du kan godt bruge <img> for de at (img)ikke er bandlyst kun "styleonload" vi har valgt ordtet styleonload som er bandlyst du kan også lave lidt om på det at der skal være til føjet et eller bilde (IMG) ellers kan du ikke tilføj i gæstebogen
"hvad der må stå"? Jamen siger du at du vil tillade et <img>-tag, ingen andre tags, og alt er ellers lovligt. Du skal starte med at definere dit udgangspunkt, og glemme alt om hvordan det skal laves. Et stykke tid.
Du betemmer selv om ordet må stå eller ikke må stå (eksempel Java ikke tilladt)Mohammed og profeten eller Jesus ikke tilladt)
for de at de stå i dit filter du bestemmer jo selv hvor groft dit filter må være og hvis der er så laver du da en database over alle de ord der ikke må stå
Jeg må her give ole ret. Du må sætte nogle regler for hvordan du forventer dit input skal se ud. Det er sådan man gør, længere er den ikke - hvorfor tror du regular expressions er opfundet?
Er dit input anderledet end forventet, så bør den kasseres. Mht. til indsættelse af billeder, så lav din egen formulering af et image-tag, og bearbejd det. Det kunne fx være <billede>sti,whatever</billede> - lad din fantasi sætte grænsen.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.