Als u een eigenaar of ontwikkelaar van een website bent, bent u waarschijnlijk op de hoogte van de dreiging van hackers. Er zijn veel manieren om uw database-gestuurde ASP- of PHP-website te beschermen tegen hackeraanvallen, variërend van zwakke tot sterke beveiligingsmaatregelen. Hier leert u over de meest voorkomende en effectieve manieren om hackers te vertragen die methoden gebruiken zoals SQL-injectie-aanvallen en XSS (cross-site scripting) via de URL-querystring en formulierinvoer. Er worden twee algemene soorten technieken voor het blokkeren van hackers besproken, waaronder aangepaste foutpagina's en invoervalidatie. Deze methoden zijn eenvoudig genoeg om het zelf te doen met alleen basiscoderingskennis. Uw beste strategie zou zijn om een ​​combinatie van zo veel mogelijk kleine obstakels op te zetten.

Stappen

  1. 1 SQL-database-gestuurde websites lopen gevaar.
  2. 2 Elke webpagina die parameters doorgeeft aan een database kan kwetsbaar zijn voor aanvallen. Dit omvat e-commerce-winkelwagentjes of andere websites met een formulier voor inloggen, zoeken, enz. Elke SQL-databasegestuurde website loopt het risico dat hackers via een achterdeur de database kunnen betreden. Meestal zijn deze achterdeuren aanwezig in URL-querystrings en formulierinvoer, zoals aanmeldingsformulieren, zoekformulieren of andere invoertekstvakken die kunnen communiceren met een database.
  3. 3 Krijg een basisoverzicht van hacking.
    • Over het algemeen kan een hacker valse tekens invoeren in de URL-querystring of een tekstvak. De nep-invoer wordt dan geïnterpreteerd als SQL in plaats van gewone gebruikersgegevens en wordt uitgevoerd door de nietsvermoedende database. Als gevolg hiervan kan de website breken en een fout weergeven, waardoor de hacker privé-informatie over de database kan achterhalen. Erger nog, de gevaarlijke scripts van de hacker kunnen feitelijk in de database worden uitgevoerd, wat leidt tot beveiligingsinbreuken en / of permanente schade.
  4. 4 Begrijp hoe hackers het doen.
    • Het eerste doel van een hacker is om herhaaldelijk te proberen een website te verbreken, waardoor het een verscheidenheid aan waardevolle fouten weergeeft die privédatabasedetails weggeven. Op deze manier kan hij inzicht krijgen in de structuur van de database en uiteindelijk een kaart of voetafdruk maken van alle tabellen en kolommen. Het tweede doel van de hacker is om de database daadwerkelijk te manipuleren door scripts op kwaadwillende manieren uit te voeren. Met controle over de database kan de hacker mogelijk creditcardnummers stelen, gegevens wissen of infecteren met virussen, naast andere vervelende dingen. In wezen zijn de URL-querystring en het tekstvak de twee achterdeurtjes in een database. Fouten krijgen en de achterdeuren manipuleren, zijn de twee methoden die door hackers worden gebruikt om uiteindelijk een database te vernietigen.
  5. 5 Begrijp hoe je je eigen website hackt.
    • Laten we eens kijken naar hoe een hacker een website kan binnengaan. Met behulp van de eerste beschreven techniek kan hij de URL-querystring hacken en ervoor zorgen dat een fout wordt weergegeven. U kunt een eenvoudige test uitvoeren om uw eigen website via de URL-querystring te hacken. Het enige dat u hoeft te doen, is om iets anders rechtstreeks in de adresbalk te typen aan het einde van uw vraagstring.
  6. Typ uw URL zoals in het volgende voorbeeld en druk op Enter: http://www.mywebsite.com/bookreports.asp?reportID=21
  7. 7 Voeg nu eenvoudig een enkel aanhalingsteken toe aan het einde van de queryreeks en druk op enter: http://www.mywebsite.com/bookreports.asp?reportID=21 '
  8. 8Genereer een fout.
  9. 9Zoals voorspeld, heb je mogelijk je website met succes overtreden en een fout ontvangen als volgt.
  10. 10Fouttype:
  11. 11Microsoft OLE DB Provider voor ODBC-stuurprogramma's (0x80040E14)
  12. 12[Microsoft] [ODBC SQL Server Driver] [SQL Server] Niet-gesloten aanhalingsteken voor de tekenreeks 'AND users.userID = reports.reportsID'.
  13. 13/bookreports.asp, regel 20
  14. 14 Het enkele aanhalingsteken veroorzaakt een niet-gesloten aanhalingstekenfout en nu zijn de eens-geheime tabelnamen en kolomnamen van uw database openbaar zichtbaar. Na het genereren van een reeks van dergelijke waardevolle fouten, kan een hacker privé-databasedetails samenvoegen die hem uiteindelijk helpen bij het inbraak in en het aanrichten van de database.
  15. 15Verberg website fouten.
  16. 16 De beste oplossing om ervoor te zorgen dat de privégegevens van uw database niet in handen komen van een hacker, is om een ​​aangepaste foutpagina voor uw website in te stellen. Op deze manier zal een hacker nooit gedetailleerde foutmeldingen zien. Als je niets anders doet, is dit het belangrijkste ding dat elke website moet hebben. Anders geef je de hacker een open uitnodiging in je database en bied je hem praktisch alle informatie die hij nodig heeft om een ​​aanval te lanceren.
  17. 17Stel aangepaste foutpagina's in.
  18. 18 Sommige hostingservices gebruiken automatisch aangepaste foutpagina's om uw beveiliging te beschermen. Om uw eigen aangepaste foutpagina in te stellen, moet u uw webhost raadplegen voor instructies. Over het algemeen maakt u een nieuwe HTML-pagina om er te laten uitzien zoals u dat wilt en dat zegt iets kort en krachtig, zoals 'Sorry, de pagina die u heeft aangevraagd, is niet beschikbaar'. Sla het vervolgens op als error404.htm en upload het naar uw server. Volgens de instructies van uw host, wijzigt u de website-instellingen om naar de nieuwe foutpagina te wijzen. Dit zal veel hackers stoppen in hun tracks.
  19. 19Bewerk de URL-querystring.
  20. 20 Naast het vissen op fouten, kan een hacker zelfs nog gevaarlijkere code invoeren dan een eenvoudig enkelvoudig citaat in de URL-querystring. In een poging kwaadaardige scripts uit te voeren in een database, wordt een verscheidenheid aan creatieve codering gebruikt, zoals% 20HAVING% 201 = 1 of misschien% 20; afsluiten zonder wachten - of veel erger. Zodra de hacker in staat is om scripts uit te voeren, is de kwetsbare database net als stopverf in hun handen. De hacker hoeft nooit de aanmeldings- of verbindingsreeks van de database te kennen omdat hij de URL-querystring gebruikt die al een open verbinding heeft.
  21. 21http:? //www.mywebsite.com/bookreports.asp reportID = 21' ; drop table myTablename--
  22. 22Uw tabel is permanent verwijderd.
  23. 23Bewerk de formulierinvoer.
  24. 24 Het andere meest gebruikelijke punt van binnenkomst naast de URL-querystring is de formulierinvoer. Een hacker kan elk tekstvak binnen een HTML-formulier manipuleren. Een zoekvak of een inlogformulier met gebruikersnaam en wachtwoordvelden zijn allemaal hoofddoelen. De hacker kan valse tekens invoeren in het tekstvak en het formulier verzenden. De invoer wordt dan geïnterpreteerd als SQL in plaats van gewone gebruikersgegevens en uitgevoerd door de database. Nogmaals, deze aanval zal ofwel een fout veroorzaken, zodat hij privé-informatie over uw database kan inlezen, of het kan gevaarlijke scripts invoegen en schade aan de database toebrengen.
  25. 25Fred '; drop table myTablename--
  26. 26Uw tabel is permanent verwijderd.
  27. 27Blokkeer de invoer met schadelijke code.
  28. 28 Inmiddels heb je waarschijnlijk een goed idee van de hoeveelheid schade die een hacker kan aanrichten en ben je klaar en bereid om alles te doen wat nodig is om ze te stoppen. De nummer een manier om een ​​hacker te verhinderen om de URL-queryreeks en tekstvakken te manipuleren, is om hun invoer te blokkeren. Maar, hoe bepaal je wie ze zijn, wat ze zullen invoeren en of het veilig is? Helaas, je kan het niet weten. U moet dus aannemen dat alle gebruikersinput potentieel gevaarlijk kan zijn. Een veel voorkomend gezegde in de programmeerwereld is dat ALL INPUT EVIL is. Het moet dus met de nodige voorzichtigheid worden behandeld. Alles van iedereen moet elke keer worden gecontroleerd om ervoor te zorgen dat er geen gevaarlijke code binnenkomt. Dit wordt bereikt door alle invoer die via een querystring of formulier wordt verzonden te controleren en vervolgens onveilige tekens af te wijzen of te verwijderen voordat deze de database bereikt. Als dit veel problemen lijkt, heb je gelijk. Maar het is de prijs die we betalen om onze websites en databases te beschermen tegen de woede van hackers. Het is uw verantwoordelijkheid als webmaster om ervoor te zorgen dat alleen schone, veilige invoer in uw database mag worden ingevoerd.
  29. 29Inputvalidatie.
  30. 30 Om te controleren of de invoer die in de URL-querystring of het tekstvak is ingevoerd veilig is, kunnen we regels voor invoervalidatie gebruiken. Met andere woorden, het gebruik van ASP-code op een webpagina kan de invoer die is verzameld van de querystring of het formulier valideren om te zorgen dat deze alleen veilige tekens bevat. Zodra de invoer veilig wordt geacht, kan deze worden opgeslagen in een nieuwe variabele, ingevoegd in de SQL-string en verzonden naar de database. Voor meer informatie over validatie,
  31. 31De was- en spoelcyclus.
  32. 32 Inputvalidatie moet een tweedelig proces zijn, zoals een was- en spoelcyclus. We willen alle invoer grondig opschonen door eerst te controleren op veilige tekens en ten tweede door te controleren op slechte reeksen. Zie de bronnen aan het einde van dit artikel voor een meer diepgaande discussie over deze methode.
  33. 33Tekens filteren.
  34. 34Een andere methode die in combinatie met de bovengenoemde twee functies kan worden gebruikt, maar als zeer zwak wordt beschouwd wanneer alleen gebruikt, is om de invoer te zuiveren door te filteren of te ontsnappen.
  35. 35 Een bekende bedreiging is het enkele aanhalingsteken of de apostrof omdat het de SQL-instructie breekt. Het volgende is een ASP-voorbeeld dat het enkelvoudige citaat onschadelijk maakt door het te vervangen door twee enkele aanhalingstekens.
  36. 36'dubbele enkele aanhalingstekens
  37. 37nieuwe Safe String = replace (searchInput, "'", "")
  38. 38 Andere variaties voor de vervangfunctie omvatten het verwijderen van de scripttag en het vervangen van een spatie. Of filter tekens zoals het dollarteken $ aanhalingsteken 'puntkomma en apostrof' de linker- en rechterhaakjes <> de linker- en rechterhaakjes () het hekje # en de ampersand &. Of converteer deze tekens naar hun HTML-entiteiten.
  39. 39Denk eraan om een ​​oplossing te gebruiken die het beste bij uw website past of raadpleeg een professional.
  40. 40 Ten slotte zijn er een aantal andere beveiligingsmaatregelen die u zelf kunt onderzoeken en verkennen. Vergeet niet dat een hacker gemakkelijk een kopie van uw webpagina kan opslaan, vervolgens de HTML en JavaScript kan wijzigen en de pagina vervolgens opnieuw kan uploaden. Daarom is het het beste om JavaScript niet alleen te gebruiken voor invoervalidatie, omdat het eenvoudig kan worden verwijderd, en in plaats daarvan elke Java-scriptvalidatie met ASP-validatie te dupliceren. Verborgen invoervelden vormen ook een bedreiging op dezelfde manier omdat ze eenvoudig kunnen worden gewijzigd om valse code te bevatten. Andere tips zijn onder meer: ​​geef nooit aanwijzingen over uw database weg, inclusief uw invoerveldnamen hetzelfde maken als de databaseveldnamen. Stel altijd een maximale lengte in voor invoer en maak het overtollige af.
  41. 41 Als u meer geavanceerde beveiligingstechnieken wilt nastreven, raadpleegt u de bronnen aan het einde van dit artikel. Onderwerpen die worden besproken zijn: wachtwoordbeleid, bufferoverschrijding, creatieve tabel- en kolomnamen, aliassen van tabelnamen, gegevenstypen instellen en controleren, .bak-bestanden, opgeslagen procedures met parameters en logbestanden.