Veiligheid: preventie strategieën is het door middel van scripting aanval



SQL Injection kwetsbaarheden op het netwerk met behulp van vallen, JS script, HTML scripting aanvallen lijken te spelen op meer dan sterk. De ene na de andere van de vele sites worden geplaagd door dergelijke aanvallen, heeft niet zoals de host kwetsbaarheden kan onmiddellijk be gerepareerd, de aanval van de WEB so dat we in de preventie of repair, dat brengt veel ongemak. Een webmaster is het meest pijnlijk dit. Hoe sterk je wachtwoord om de aanvaller er altijd al geweest, maar hoe kunnen we komen tot echte veiligheid? In de eerste plaats niet bij elkaar contact op met uw wachtwoord en uw leven, ten tweede, Supermaster de PWD alleen jij weet het beste ten derde, absoluut noodzakelijk is om uw website programma te verbeteren. Maar hoe kunnen we verbeteren, zal het ons uiteindelijke doel van dit artikel.

Veiligheid, hoe de beveiliging doen? Willen bescherming is noodzakelijk om te weten hoe ze elkaar kunnen aanvallen. Veel artikelen zijn geschreven om een bepaalde site te vangen, in feite, de weg van hun aanvallen, maar ook de volgende:

1. Eenvoudige scripting aanval

Dergelijke aanvallen problemen moet het saai is. Bijvoorbeeld ****: alert ();, want van een filter is niet sluiten voor wat de aanvaller niet alleen beschikbaar, maar hij kan ook afbreuk doen aan het doel. Veel sites aanwezige gratis service, of een programma op hun eigen site is niet strikt een filtratie-probleem.

2. Gevaarlijke scripting aanval

Dergelijke aanvallen zijn over het script kan de beheerder of een andere gebruiker informatie over de omvang te stelen. Zo weten we allemaal, stelen van cookies, gebruik het script op de lokale client meer schrijven.

3. SQL Injection exploits

Het kan worden gezegd dat deze aanval is uit te gaan van Dongwangluntan en BBSXP. Filteren met behulp van SQL speciale tekens zijn niet strak, en cross-database query aanvallen. Bijvoorbeeld:

http://127.0.0.1/forum/showuser.asp?id=999 en 1 = 1

http://127.0.0.1/forum/showuser.asp?id=999 en 1 = 2

http://127.0.0.1/forum/showuser.asp?id=999 en 0 (select count (*) van de admin)

http://127.0.0.1/forum/showuser.asp?id=999 '; verklaren sysName @ a @ a set =' xp_ '+

'Cmdshell "exec @ een" dir c :'---& steun = 9

Haal het wachtwoord van de beheerder controle heeft: het hele station hoeft niet aan de gastheer van privileges, maar ook voor deze stap een hoop voorafschaduwing doen. SQL-injectie aanvallen vergelijkbaar met de wegen en middelen veel verschillende bestandsformaten filter is niet genomen om de query op verschillende manieren te sluiten. Dus om een volledig karakter filter wanneer de procedures zijn niet de volgende inspanning is onmogelijk.

4. Remote injectie aanvallen

Een site van de zogenaamde filteren slechts een eenvoudig formulier indienen pagina JS filtering. Voor de gemiddelde gebruiker, je hoeft niet te voorkomen; van de aanslag met voorbedachten rade betreft, lijken niet op een dergelijke filterende werking zijn. We zeggen vaak dat de POST-aanval is een voorbeeld van. Ingediend door aanvallen van op afstand illegale informatie in om het doel te bereiken.

Door de bovenstaande beschrijving van een aanval methoden, wij in het algemeen de aanvallers weg te begrijpen, de volgende beschrijving richten we ons op het begin, hoe ze effectief script aanslagen te voorkomen!

Dus we starten vanaf de eenvoudigste:

Tegen script aanslagen

JS scripts en HTML-scripting aanval te voorkomen is heel simpel: Server.HTMLEncode (STR) bin. Natuurlijk moet je niet huilen, hoe zou dat zijn? U dat u mij naar het station Ik hou niet van alle add om te filteren uitgeput? Met het oog op het filteren, hoeven we alleen HTML-scripts en JS scripts uit te filteren enkele belangrijke karakters kan worden vergemakkelijkt : de procedure lichaam (a) als volgt:

"De volgende is een filter-functie

"De volgende voorbeelden zijn voor een toepassing

Gebruikersnaam = CHK (vervang (Request ("gebruikersnaam "),"'",""))

Inclusief de functie geschreven met behulp van de openbare pagina, dus is de beste efficiëntie.

Procedure lichaam (1)

Daarnaast is het de moeite waard onze aandacht is dat veel gebruikers van deze site te registreren, of te wijzigen de pagina van de gebruiker informatie is ook een gebrek aan script filtering, of slechts in een filter, past u de informatie geregistreerd in het post-script kan nog steeds aanvallen. Data afkomstig van een gebruiker op te sporen en filter, het programma lichaam (2) als volgt:

"De volgende is een filter-functie

Als Instr (verzoek ("gebruikersnaam "),"=") 0 of

Instr (verzoek ("gebruikersnaam "),"%") 0 of

Instr (verzoek ("gebruikersnaam"), chr (32)) 0 of

Instr (verzoek ("gebruikersnaam "),"?") 0 of

Instr (verzoek ("gebruikersnaam "),"&") 0 of

Instr (verzoek ("gebruikersnaam "),";") 0 of

Instr (verzoek ("gebruikersnaam "),",") 0 of

Instr (verzoek ("gebruikersnaam "),"'") 0 of

Instr (verzoek ("gebruikersnaam "),"?") 0 of

Instr (verzoek ("gebruikersnaam"), chr (34)) 0 of

Instr (verzoek ("gebruikersnaam"), chr (9)) 0 of

Instr (verzoek ("gebruikersnaam"), "") 0 of

Instr (verzoek ("gebruikersnaam "),"$") 0 of

Instr (verzoek ("gebruikersnaam ")," ") 0 of

Instr (verzoek ("gebruikersnaam ")," ") 0 of

Instr (verzoek ("gebruikersnaam "),"""") 0 dan

Response.Write "vriend, voor te leggen uw gebruikersnaam bevat het illegale karakter te veranderen, ik dank u om terug te keren"

Response.End

end if

Procedure instantie (2)

Met het oog op de efficiency willen we verder filteren van de inhoud van de procedures te voorzien, waardoor de filtratie-efficiëntie van de verschillende parameters zal grotendeels worden verhoogd: zoals programma orgaan (3)

"Na het hoofdprogramma

dim Bword (18)

Bword (0 )="?"

Bword (1 )=";"

Bword (2 )=" "

Bword (3 )=" "

Bword (4 )="-"

Bword (5 )="'"

Bword (6 )=""""

Bword (7 )="&"

Bword (8 )="%"

Bword (9 )="$"

Bword (10 )="'"

Bword (11 )=":"

Bword (12 )="|"

Bword (13 )="("

Bword (14 )=")"

Bword (15 )="--"

Bword (16) = "chr (9)"

Bword (17) = "chr (34)"

Bword (18) = "chr (32)"

ERRC = false

"De volgende zijn voorbeelden van een toepassing

voor i = 0 tot UBound (Bword)

Als Instr (FQYs, Bword (i)) 0 then

ERRC = true

end if

volgende

Als vervolgens ERRC

Response.Write "

Response.End

end if

Procedure orgaan (3)

Met de bovenstaande filter functie die u kunt plaatsen in de toepassing van enige noodzaak om te filteren functie direct filter op. Dit brengt ons bij de restauratie werkzaamheden sterk vereenvoudigd.

Bovendien, meer dan ik zou willen nogmaals herinneren, zal een klein aantal van de sites during meningsuiting of UBB icon appear when the transformation filter issue, want het was verborgen is not easy to vinden:

Zoals:

We passen de tekst labels,

Wist niet dat je begrijpt, voordat een offerte en procedures in de linker aanhalingstekens, enkele aanhalingstekens gebruikt in het tweede en sloot de juiste aanhalingstekens, dus het proces als output:

Als het beeld niet bestaat, dan is de tag wordt geactiveerd onerror uitvoering script. Voor de enkele aanhalingstekens zijn het filteren van sites, zoals hier, compleet met dubbele aanhalingstekens. **** Voor de gefilterde veld, en alleen alert () kan ook. Dus moeten we filter volledig filter, geef niet op de aanvaller de kans om een spoor te verlaten.

Voorkom SQL Injection exploits

Het kan hier worden gezegd lijkt de focus van het hele artikel. SQL injection kwetsbaarheid op de diversificatie maakt ook onze verdediging op het programma had een beetje meer denken. SQL-injectie in het gezicht van de sterke "beledigend", wat we aan het eind van het filter?

Het risico van een aantal veel gebruikte karakters hebben

'Database velden te onderscheiden gesloten

- Mark een aantal van de database annotatie

# Sommige database annotatie tekenen

"Kan leiden tot fouten,

Cross-gids

3221143836nicode tekencodering functies

$ Kan gebruikt worden voor variabele label

/ En hetzelfde

NULL voorzichtig moesten zijn "leeg" zijn inschrijving in het risico van de behandeling kan leiden tot de database of het systeem fout op fout structuur overflow.

Spaties en 'samen bouwen sql injeciton

= & Als de tweede parameter kan worden herschreven querystr.

(1) van de meest algemene. SQL Injection exploits gezien: gebruikersnaam en wachtwoord op de filtering problemen, zoals:

Ingezonden: gebruikersnaam: 'of''=' user password: 'of''='

Uitgaande van het proces, kunnen we komen tot, de volgende database

SQL = "SELECT back-up bin conf config gegevens eshow_sitemap.html generate.sh log maint sitemap.html svn tmp VAN lUsers WHERE Gebruikersnaam =''of''='' en Wachtwoord =''of''=''"

Op deze manier, dus, zal SQL server weer alle records lUsers tafel, terwijl de ASP-script zal worden aangezien voor een aanvaller een lUsers de eerste record in de tabel te voeren, waardoor de aanvaller in te loggen naam van de gebruiker website. Schijnt om te voorkomen dat dit soort van injectie is heel eenvoudig:

Kan worden bereikt via de volgende procedure, de procedure lichaam (4)

strUserName = Replace (Request.Form ("Username"), "''", "''''")

strPassword = Replace (Request.Form ("Password"), "''", "''''")

Procedure lichaam (4)

(2) om te voorkomen dat SQL-injectie aanvallen, de eerste stap is het gebruik van een verscheidenheid van de veiligheid betekent dat de controle van de ASP-Request-object (Reques, Request.QueryString, Request.Form, Request.Cookies en Request.ServerVariables) input van de gebruiker, om ervoor te zorgen dat de SQL-opdracht betrouwbaarheid. Specifieke veiligheidsmaatregelen variëren afhankelijk van uw DBMS.

SQL-injectie aanvallen kunnen schade veroorzaken aan het milieu hangt af van de software van de site en configuratie. Wanneer de webserver aan de exploitant (DBO) van de identiteit toegang tot de database, met behulp van SQL-injectie aanval, die kon verwijderen alle vormen, nieuwe vormen, en zo verder. Wanneer de server naar super user (nv) van de capaciteit toegang tot de database, met behulp van SQL injectie aanvallen konden beheersen de gehele SQL Server; in bepaalde configuraties werden aangevallen of zelfs uw eigen account met het oog op Wanquan manipuleren Windows-server waar de database zich bevindt.

Zoals:

http://127.0.0.1/forum/showuser.asp?id=999 '; verklaren sysName @ a @ a set =' xp_ '+

'Cmdshell "exec @ een" dir c :'--& steun = 9

http://127.0.0.1/forum/showuser.asp?id=999 '; verklaren sysName @ a @ a set =' XP '+

'_cm' + 'DSHELL "exec @ een" dir c :'--& steun = 9

Kan zelfs te voeren, zoals: net user fqy fqy / Voeg deze opdracht. Natuurlijk is dit vereist dat u de huidige status moet worden uitgevoerd Sa, of dat u slechts een aanval virtual host, raad ik u aan om daar te stoppen.

Voor sommige sites voor de machine op poort 80 te gebruiken om aanvallen te voorkomen door een machine rechtstreeks aan administratieve rechten te krijgen, is het essentieel geworden. Filter op de xp_cmdshell uitgegroeid tot de primaire, veel sites zijn met behulp van de procedures GET en POST of gegevens, gemengd dienen te krijgen, en voor dit, geven we een manier om te voorkomen SQL injectie procedure GET gedrag: zoals programma body (5)

fqys = Request.ServerVariables ("query_string")

dim nothis (18)

nothis (0) = "net user"

nothis (1) = "xp_cmdshell"

nothis (2) = "/ add"

nothis (3) = "exec% 20master.dbo.xp_cmdshell"

nothis (4) = "netto localgroup beheerders"

nothis (5) = "select"

nothis (6) = "count"

nothis (7) = "ASC"

nothis (8) = "char"

nothis (9) = "mid"

nothis (10 )="'"

nothis (11 )=":"

nothis (12 )=""""

nothis (13) = "insert"

nothis (14) = "delete"

nothis (15) = "drop"

nothis (16) = "afkappen '

nothis (17) = "uit"

nothis (18 )="%"

ERRC = false

voor i = 0 tot UBound (nothis)

Als Instr (FQYs, nothis (i)) 0 then

ERRC = true

end if

volgende

Als vervolgens ERRC

Response.Write "

Response.End

end if

Procedure body (5)

Ik wil de verklaring punt is: De bovenstaande procedure is een methode GET op de gegevens die door het filter, niet blindelings toe te passen.

Net als andere voorwerpen uit de ASP-verzoek (Reques, Request.QueryString, Request.Form, Request.Cookies en Request.ServerVariables) aanval methode van input van de gebruiker methoden, grotendeels geconcentreerd in het script variabele is de verwachte aantal van variabele input (ID ), natuurlijk kunnen we niet alleen kijken naar het aantal variabelen, zoals:

http://127.0.0.1/systembbs/showtopic.asp?tid=99&name=abc 'en links (userpasswor

d, 1) = 'a

http://127.0.0.1/systembbs/addtopic.asp?tid=99&name=abc 'en userpasswor

d = 'of''='

Bovendien, hoe een enkele injectie om fouten als deze te voorkomen?

http://127.0.0.1/systembbs/addtopic.asp?tid=99 '; verwijderen forum_forum; - & pagina = 33

Preventie programma: het programma lichaam (6)

...... Addtopic.asp? Action = toe te voegen ......

...... Addtopic.asp? Action = delect ......

Actie 1 = trim (Request.QueryString ())

If Left (actie1, 7) "action =" dan "moet worden beperkt tot actie = querystring

fout (err01) "error handling

anders

action = Request.QueryString ("actie") 'Haal de waarde van de querystring

end if

Select Case actie 'aan te pakken op de querystring

geval "add"

.....

geval "delete"

......

Case Else 'Als de querystring is dit niet de waarde voor foutafhandeling

fout (Err02)

End Select

Procedure lichaam (6)

Een dergelijke aanval plaatsvindt, zodat onze webmasters hoofdpijn weer, hier kan ik u een oplossing voor de beste manier, in het algemeen, de gebruikersnaam lengte, aantal karakters niet meer dan 15 karakters, de meeste van de 14 tekens . Dan zijn we gaan uit van de lengte te filteren: Als een programma lichaam (7)

Naam = vervangen (naam ,"'","")

If Len (naam) 16 dan

Response.write "Je doet wat?"

Response.End

Einde als

Procedure instantie (7)

Waarom zijn we hier en het filteren van de enkele aanhalingstekens, hoe zij er nogmaals een lengte te beperken? Little zei 4ngel artikel eerste harrying'restrictions zie verder injection . Vraag me niet hoe overschakelen naar een digitaal formaat, zal ik niet, hehe ...^_^!

Ook bleef om terug te keren naar onze thema, "het script verwachte aantal input variabelen is de variabele (ID)". Hoe uit te voeren in de preventie, damn, te veel manieren, de meest directe is vast te stellen of het aantal gehele getallen zijn er controleert een aantal van de meer persoonlijke benadering, introduceren wij een voor een, zoals: het programma lichaam (8)

Bepaal eerst of het nummer is integer

p_lngID = CLng (Request ("ID"))

Ten tweede vind ik dit punt aan de mond-gegevens lengte lengte nemen, is niet groter dan de normale 8-bits dus:

If Len (ID) 8 dan

Response.Write "bedstijl"

reactie einde

end if

3 Ik denk dat dit een riskante manier is het uitvoeren van een database query, als de database tabel met dezelfde waarde is niet hetzelfde als het geeft een foutmelding.

sql = "SELECT NAAM VAN categorie waar ID =" & ID

SET TEMP = conn.Execute (SQL)

Als temp.bof of temp.eof dan

Response.Redirect ("index.asp")

anders

cat_name = temp ("naam")

end if

SET TEMP = niets

"Het bovenstaande is de ID van de testgegevens, de volgende is de formele onderzoeksprocedure

sql = "SELECT ID T_ID, NAAM VAN categorie waar ID =" & ID & "ORDER BY XH ASC"

rs.open sql, Conn, 1,1

Vierde, Ik gebruikte de gegevens te filteren scripts, octrooien, oh ~

id = vervangen (id ,"'","")

If Len (Request ("id")) 8 vervolgens op 'Waarom koos hij de lengte van de bovengenoemde procedures hebben aangetoond

Response.Write "

Response.End

anders

Als verzoek ("id ") "" neem dan 'is niet leeg is het aantal procedures om te voorkomen null-waarden worden weergegeven in de pagina, en als we hier niet te oordelen over de programma controleert een fout.

Als IsNumeric (Request ("id")) = False vervolgens op 'Feng Qingyang ID gegevens te wijzigen bewakingsprogramma

Response.Write "

Response.End

end if

end if

end if

Procedure lichaam (8)

Zoals mijn programmering gewoontes, houd ik alle procedures inspectie van de gegevens werden gehandhaafd om de gehele publieke zender de programma's, zoals: conn.asp materie, schrijf gewoon de hele station kan worden hersteld zodra de kwestie.

Hier noem ik iets over het probleem van de aanval is het uitvoeren van de gebruiker wachtwoord of gebruikersnaam, gewoonlijk gebruikt wordt

...... / Show.asp? Id = 1 en 0 (select count (*) van admin, waar id = 3 en links (gebruikersnaam, 1) = 'a')

Op deze manier een voor een proberen natuurlijk, kunnen we hier niet vermelden wat Perl programma om een wachtwoord draaien, het programma is geschreven door iemand anders, naar de beginselen van hun eigen kennis. Hier, ik wil gewoon een handige manier te geven is nemen de werkingssfeer van ASC code. Dit is dan running alone veel sneller te zijn. of de letters, cijfers, tekens, speciale tekens, ze altijd de overeenkomstige ASC-code, gebruikt u de volgende methoden:

...... / Show.asp? Id = 1 en 0 (select count (*) van admin, waar id = 3 en ASC (rechts (links (gebruikersnaam

e, 3) 1)) tussen 1 en 10000) met u over de rest van de algemene 97-122 kan worden vrienden, brieven Nou, binnenkort D. Oh, natuurlijk, iemand gebruik wil maken van de mid-functie is ook goed ASC ( MID (gebruikersnaam, 2,1)) tussen 1 en 10000 zijn geworden.

Hoe veel effectiever om SQL injectie aanvallen te voorkomen? We zullen het bijzonder het volgende artikel op te noemen!

Injectie tegen externe aanvallen

Dergelijke aanvallen in het verleden moet worden een meer voorkomende aanval methoden, zoals de post vallen, kan een aanvaller eenvoudig wijzigen van de waarde voor de gegevens moeten worden voorgelegd aan het doel is bereikt aanslagen. Een ander voorbeeld: Cookies gesmeed, het verdient ook de programmeur of het station lange nota, geen gebruik van cookies om te doen voor de gebruiker authenticatie methode, of u en de dief verliet de sleutel is om dezelfde reden.

Bijvoorbeeld:

Als trim (Request. cookies ("uname "))=" fqy" en Request.cookies ("upwd")

= "# Fqy e3i5.com" dan

Meer ........ .........

Einde als

Ik zou willen dat u programma's te schrijven als webmaster of vrienden niet zulke fouten te maken, is echt onvergeeflijk. Vals Cookies zijn vele jaren van nu, kun je niet kwalijk nemen andere mensen dit gebruiken om uw wachtwoord te voeren. Inzake het gebruikerswachtwoord of een gebruiker ingelogd, u kunt beter gebruiken is de meest beveiligde sessie. Als u wilt COOKIES Cookies gebruiken uw gegevens in te voegen een extra, sessie, die is 64-bit waarde, de oplossing voor denk het niet mogelijk is . Voorbeeld:

indien niet (of rs.BOF rs.eof), dan

login = "true"

Session ("gebruikersnaam" & sessie) = Gebruikersnaam

Session ("wachtwoord" & sessie) = Wachtwoord

'Response.cookies ("gebruikersnaam") = Gebruikersnaam

'Response.cookies ("Password") = Wachtwoord

Laten we praten over hoe je remote injectie aanvallen te voorkomen, aanvallen zijn over het algemeen een vel indiening op de lokale, de form action = "chk.asp-punt naar uw server kan verwerken de gegevens bestand. Als je alle data filteren in een enkel formulier pagina, dan feliciteer u, zult u het script aanval.

Hoe kunnen we verhinderen dat deze een externe aanval? Makkelijk te hanteren, zie de onderstaande code: procedure lichaam (9)

'Persoonlijk gevoel van de bovenstaande code filtering is niet erg goed, er zijn een aantal externe en ze was er trots op in te dienen, dan schrijven a.

'Dit is het filter werkt goed, aanbevolen.

Als Instr (Request.ServerVariables ("HTTP_REFERER"), "http://" & Request.ServerVariables ("host")) 1 dan

Response.Write "server fout bij de verwerking van URL.

Als u alle middelen aan te vallen met de server, je moet blij zijn, voor uw server, zijn alle operations zijn opgenomen, zullen we eerst melden bij het Public Security Bureau en de nationale veiligheid department om uw IP-onderzoeken. "

Response.End

end if

Procedure lichaam (9)

Ik dacht dat alles zal goed worden, in de vorm pagina door toevoegen van een aantal beperkingen zoals maxLength vrienden, enz. .. maar God is so Buzuo Mei, banger voor wat hij increasingly. Vergeet niet, kan een aanvaller kunnen doorbreken SQL injectie aanval, de lengte van het invoerveld. SOCKET schrijf een procedure HTTP_REFERER veranderen? zal ik niet. Online publiceerde een artikel:

------------ Len. Reg -----------------

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt verlengd (& E)]

@ = "C: Documents and SettingsAdministrator Desktop len.htm"

"Contexten" = dword: 00000004

Einde ----------- ----------------------

----------- Len. HTM ------------------

---------- ----------------------- End

Gebruik: eerste len.reg in het register (let op het pad naar het bestand)

En dan te kopiëren naar de plaats opgegeven in het register len.htm.

Open de webpagina, to de cursor op het invoerveld te wijzigen de lengte of de klik met de rechtermuisknop op meer van een call optie te zien om de juiste extensie

Klik hier om te krijgen! Naschrift: Dezelfde beperkingen ook kan omgaan met die elementen van het script input.

Hoe? Onze grens werd gespaard, en alle pogingen waren tevergeefs? Niet, breng je de toetsenbord, nee zeggen. Laten we verder te filteren terug naar het script karakters, ze waren niets meer dan een script injectie aanvallen. We hebben allemaal al de energie ACTIE pagina gebruiken nadat het in chk.asp pagina, wij zullen filteren alle ongeldige tekens, het resultaat? We enige kans schijnbeweging aan de voorzijde en vertelde hen om het register te veranderen als Ze vindt volledige verandering in, ze zijn zo ijdel doen.

ASP Trojan

Al eerder hier genoemd, aan te herinneren dat u een webmaster forum, let op uw bestand upload worden: Waarom is gebroken na het Forum-programma zal ook een aanvaller de host. Reden waarom ...... juist! ASP Trojan! Een absoluut afschuwelijk ding. Wat virus? Absoluut niet. De bestanden eenvoudig in je forum-programma, gaan zoeken je oude. Oh nee hematemesis vreemd. Hoe te voorkomen dat ASP-Trojan is geüpload naar de server? Methode is simpel, als je forum ter ondersteuning van het uploaden van bestanden, kunt u de bestandsindeling die u wilt uploaden stel ik niet goed te keuren kan het bestandsformaat te veranderen, rechtstreeks van de procedure vergrendeld, zodat alleen de Image File Format, en gecomprimeerde bestanden kan volledig worden handiger laten ook hun eigen handiger om de aanvaller te verlaten. Hoe het formaat rechter, ik heb hier een collectie, ook veranderd van een, kunnen we kijken naar: De procedure lichaam (10)

'Bepaal het type bestand is gekwalificeerd

Prive Functie CheckFileExt (fileEXT)

dim Forumupload

Forumupload = "gif, jpg, bmp, jpeg"

Forumupload = split (Forumupload ,",")

voor i = 0 tot UBound (Forumupload)

Als lcase (fileEXT) = lcase (trim (Forumupload (i))) dan

CheckFileExt = true

Functie afslag

anders

CheckFileExt = false

end if

volgende

End Function

'Controleer of de legitimiteit van het document

set Mijnbestand = Server.CreateObject ("Scripting.FileSystemObject")

set mytext = MyFile.OpenTextFile (sFile, 1) 'een tekst bestand te lezen

sTextAll = lcase (MyText.ReadAll): MyText.close

'Bepaal het risico van de gebruiker bestands operaties

sStr = "8 |. getfolder |. createFolder |. Map verwijderen |. createdirectory |

. Deletedirectory "

sStr = sStr & "|. SaveAs | wscript.shell | script.encode"

sNoString = split (sStr ,"|")

voor i = 1 tot sNoString (0)

Als Instr (sTextAll, sNoString (i)) 0 then

sFile = Upl.Path & sFileSave: fs.DeleteFile sFile

Response.write "

"& & SFileSave" documenten en de werking van directories met het commando "& _

"

"& Mid (sNoString (i), 2) &", om veiligheidsredenen, niet kunt uploaden. "& _

"

"

Response.End

end if

volgende

Procedure lichaam (10)

Voeg toe aan uw upload hun procedures in het doen van een validatie, dan is de beveiliging van uw upload proces zal sterk worden verbeterd.

Wat? U geen zorgen te maken? Out moordenaar, vraag dan uw provider om te helpen. Inloggen op de server, de PROG-ID in de "shell.application" producten en "shell.application.1" omgedoopt item of geschrapt. Dan "WScript.Shell" producten en "WSCRIPT.SHELL.1" Deze twee moet worden gewijzigd of geschrapt. Oh, ik durf te zeggen, meer dan de helft van China kunnen geen herstel van de virtual host zijn. Gelukkig kunt u zeer coöperatief gebruikers, anders ...... ik verwijderen, verwijder ik, delete verwijder ik mijn ......

Overzicht

Hoe beter om SQL injectie aanvallen te voorkomen? Hier ben ik op verschillende manieren, eerste, gratis programma's niet echt gratis gebruik aan te bevelen, aangezien je de originele code delen, dan kan de aanvaller dezelfde code te analyseren. Als de eigenaars hebben de mogelijkheid om te veranderen wat is de beste database tabelnamen, veldnamen, wijzigen alleen de sleutel admin, gebruikersnaam, wachtwoord op, zoals forum_upasswd dit gebied, die u de naam raden? Als u geraden, de meest goede koop loterij al snel een top award zal je niet wie dan wel? Bovendien, de sleutel ligt in het wachtwoord van de beheerder van deze site is algemene, ook de bescherming van uw wachtwoord van de beheerder dat cruciaal is, ten minste 10 het aantal combinaties van de brief. Een ander pluspunt is dat de meeste sites zal MD5 gebruiken om het programma te coderen het gebruikerswachtwoord, plus je wachtwoord robuustheid, zodat de veiligheid van uw site op de sterk toegenomen. Als er een SQL injection kwetsbaarheid kan een aanvaller niet winnen u de site onmiddellijk.