sql >> Databasteknik >  >> RDS >> Mysql

PHP säker användarvariabel

Det finns två mycket viktiga saker du måste göra för att undvika allvarliga säkerhetsproblem.

  1. Du måste undkomma användarinmatningen innan du lägger in den i din SQL-fråga. Escape innebär att escape alla specialtecken som '; lyckligtvis finns det en funktion som redan gör det automatiskt:mysql_real_escape_string .

    Om du inte undkommer användarinmatning kan otäcka saker hända. Föreställ dig att din fråga är INSERT INTO userdata VALUES ('$user_data') . Föreställ dig nu att användaren skrev '; DROP DATABASE userdata; .

    Om du inte undkommer det kommer din fråga att bli:INSERT INTO userdata VALUES (''; DROP DATABASE userdata;') . Som du kan föreställa dig är detta inte bra:om du har aktiverat flera uttalanden kan du kyssa adjö till din databas. Detta kallas en SQL-injektion attack.

  2. När du matar ut din variabel till användaren måste du också ersätta HTML-specialtecken med HTML-entiteter. Lyckligtvis finns det en funktion för att göra det också:htmlspecialchars() . Det kommer att omvandla de speciella HTML-tecknen som < till < .

    Detta verkar vara ett problem som ofta underskattas, men i verkligheten är det väldigt allvarligt. Tänk dig om $user_data innehåller <script>SomeNastyScript()</script> . Det kan utnyttja befintliga sårbarheter i dina användares webbläsare, eller så kan det skicka en cookie som inte är HTTPOnly (som kan innehålla sparade lösenord) till angriparen, eller så kan det lura användaren att skriva sitt lösenord på ett formulär som genererats genom manipulering av DOM (möjligt i javascript), eller en massa andra dåliga saker.

    Detta kallas XSS (Cross-site scripting).

Kort version

  1. Ring mysql_real_escape_string på strängen innan du infogar den i din SQL-fråga (men inte när du echo det).

  2. Ring htmlspecialchars på strängen innan den visas för användaren (men inte när du lägger den i databasen).



  1. Kör Galera Cluster på Kubernetes

  2. Räkna alla objekt i din databas

  3. MySQL Update Query med hjälp av en vänsterkoppling

  4. Uppdatera data via en tabellvärderad funktion i SQL Server