|
Categorieën >
PHP & SQL
sql injection beveiliging
|
|
|
offline
|
Grafische interesse
|
Ik heb de volgende functie;
<?php
function quote_smart($value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if(version_compare(phpversion(),"4.3.0") == "-1") {
return mysql_escape_string($value);
} else {
return mysql_real_escape_string($value);
}
}
?>
<?php function quote_smart($value) { } } else { } } ?>
Wat doet die version compare precies? Of hoe werkt het?
Of heeft iemand mss een betere function om variabelen die je wil in je database wil plaatsen te beveiligen tegen sql injection?
mvg |
2 antwoorden
Wim – 14/11/2008 18:35
|
|
offline
|
Crew algemeen
|
mysql_real_escape_string gewoon... Je kan er ondertussen wel vanuit gaan dat een host php 4.3.0+ gebruikt, ze moesten nl al lang allemaal php5 ondersteunen... Met de komst van php6 lijkt php4 me overbodig...
PHP.net: version_compare kan het niet beter en duidelijker uitleggen
|
JBke – 15/11/2008 12:02 (Laatst gewijzigd op 15/11/2008 12:05)
|
|
offline
|
PHP gevorderde
|
Als je volledig veilig wil spelen kan je het volgende gebruiken maar zoals wimmarien zegt, normaal bij een goede host heb je dit allemaal niet meer nodig.
in je Application controller of gewoon ergens een functie zet je:
<?php
/**
* Strips slashes for $_GET, $_POST and $_COOKIE
*/
public static function superglobal_strip_slashes() {
if (isset($_GET) && !empty($_GET)) {
$result = Application::strip_slashes_recursive($_GET);
$_GET = $result;
}
if (isset($_POST) && !empty($_POST)) {
$result = Application::strip_slashes_recursive($_POST);
$_POST = $result;
}
if (isset($_COOKIE) && !empty($_COOKIE)) {
$result = Application::strip_slashes_recursive($_COOKIE);
$_COOKIE = $result;
}
}
/**
* Recursively strip slashes from a value
*
* @param mixed $value
*/
public static function strip_slashes_recursive(&$value) {
$result = is_array($value) ? array_map(array('Application', 'strip_slashes_recursive'), $value) : stripslashes($value);
return $result;
}
?>
<?php /** * Strips slashes for $_GET, $_POST and $_COOKIE */ public static function superglobal_strip_slashes () { $result = Application::strip_slashes_recursive($_GET); $_GET = $result; } $result = Application::strip_slashes_recursive($_POST); $_POST = $result; } $result = Application::strip_slashes_recursive($_COOKIE); $_COOKIE = $result; } } /** * Recursively strip slashes from a value * * @param mixed $value */ public static function strip_slashes_recursive (&$value) { return $result; } ?>
in je index of in je bootstrap, whatever zet je het volgende:
<?php
// Magic quote check
$magicQuotesEnabled = (bool) ini_get('magic_quotes_gpc');
if($magicQuotesEnabled === true) {
Application::superglobal_strip_slashes();
}
?>
<?php // Magic quote check $magicQuotesEnabled = (bool ) ini_get('magic_quotes_gpc'); if($magicQuotesEnabled === true) { Application::superglobal_strip_slashes(); } ?>
Zo ben je zeker dat alles gestript word.
|
Dit onderwerp is gesloten.
|
|
|