Het zijn in feite twee groepen mensen die je systeem kunnen aanvallen
Het volgende zijn de soorten aanvallen waar we op moeten letten.
Dit type aanval voegt schadelijke code toe aan SQL instructies.
Dit gebeurt met behulp van gebruikersinvoerformulieren of URL's die variabelen gebruiken.
De bijgevoegde code geeft de voorwaarde in de WHERE component van een SQL instructie op.
De code kan ook
Dit type aanval voegt schadelijke code in, meestal JavaScript. Dit gebeurt met behulp van gebruikersinvoerformulieren zoals contactformulier en opmerkingenformulieren.
Dit word gedaan om
Laten we nu kijken naar enkele van de best practices van PHP Security die we moeten overwegen bij het ontwikkelen van onze applicaties.
De functie strip_tags verwijdert HTML, JavaScript of PHP tags uit een tekenreeks.
Deze functie is handig als we onze applicatie moeten beschermen tegen aanvallen zoals cross-site scripting.
Laten we een toepassing overwegen die reacties van gebruikers accepteert.
<? Php $user_input = "Your site rocks"; echo "<h4>My Commenting System</h4>"; echo $user_input; ?>
Ervan uitgaande dat u comments.php hebt opgeslagen in de map met phptuts, bladert u naar de URL http://localhost/phptuts/comments.php
Laten we aannemen dat je het volgende ontvangt als de gebruiker ingevoerde <script> waarschuwing ('Your site sucks!'); </ Script>
<? Php $user_input = "<script> alert ('Your site sucks!'); </ script>"; echo "<h4>My Commenting System</ h4>"; echo $user_input; ?>
Blader naar de URL http://localhost/phptuts/comments.php
Laten we nu onze applicatie beveiligen tegen dergelijke aanvallen met de functie strip_tags.
<? Php $user_input = "<script> alert ('Your site sucks!'); </ script>"; echo strip_tags($user_input); ?>
Blader naar de URL http://localhost/phptuts/comments.php
De functie filter_var wordt gebruikt om gegevens te valideren en te ontsmetten.
Validatie controleert of de gegevens van het juiste type zijn. Een numerieke validatiecontrole van een tekenreeks retourneert een fout resultaat.
Ontsmetting is het verwijderen van illegale karakters uit een string.
Controleer deze link voor de volledige referentie filter_var
Het gebruikt de filter_var functie en FILTER_SANITIZE_STRIPPED constante om tags te verwijderen.
<? Php $user_input = "<script> alert('Your site sucks!'); </ script>"; echo filter_var($user_input, FILTER_SANITIZE_STRIPPED); ?>
alert ('Your site sucks!');
Deze functie wordt gebruikt om een toepassing te beschermen tegen SQL-injectie.
Laten we veronderstellen dat we de volgende SQL-instructie hebben voor het valideren van het gebruikers ID en wachtwoord.
<? Php SELECT uid, pwd, role FROM users WHERE uid = 'admin' AND password = 'pass'; ?>
Een kwaadwillende gebruiker kan de volgende code invoeren in het tekstvak user id. 'OF 1 = 1 - En 1234 in het tekstvak van het wachtwoord
Laten we de authenticatiemodule coderen
<? Php $uid = "' OR 1 = 1 -- "; $pwd = "1234"; $sql = "SELECT uid, pwd, role FROM users WHERE uid = '$uid' AND password = '$pwd';"; echo $sql; ?>
SELECT uid, pwd, role FROM users WHERE uid = '' OR 1 = 1 -- ' AND password = '1234';
De bovenstaande query retourneert alle gebruikers
Laten we nu de functie mysql_real_escape_string gebruiken om onze aanmeldingsmodule te beveiligen.
<? Php $uid = mysql_real_escape_string ("'OR 1 = 1 -- "); $pwd = mysql_real_escape_string ("1234"); $sql = "SELECT uid, pwd, role FROM users WHERE uid = '$uid' AND password = '$pwd';"; echo $sql; ?>
SELECT uid, pwd, role FROM users WHERE uid = '\' OR 1 = 1 -- ' AND password = '1234';
Merk op dat het tweede enkele aanhalingsteken voor ons is ontsnapt, het zal worden behandeld als onderdeel van het gebruikers ID en het wachtwoord zal niet worden becommentarieerd.
Md5 is de afkorting voor Message Digest 5 en sha1 is het acroniem voor Secure Hash Algorithm 1.
Ze worden beide gebruikt om strings te coderen.
Zodra een string is gecodeerd, is het vervelend om deze te decoderen.
Md5 en sha1 zijn erg handig bij het opslaan van wachtwoorden in de database.
De onderstaande code toont de implementatie van md5 en sha1
<? Php echo "MD5 Hash:". md5 ( "password"); echo "SHA1 Hash:". sha1 ( "password"); echo $sql; ?>
Ervan uitgaande dat u het bestand hashes.php in de map phptuts hebt opgeslagen, bladert u naar de URL
Zoals je kunt zien aan de hand van de bovenstaande hashes, zouden hackers die nog geen toegang hadden tot je database, nog steeds geen wachtwoord kennen om in te loggen.