Tout d'abord, laissez-moi vous dire qu'environ 85% des méthodes de protection sont effectuées avec 2 fonctions.
Tout d'abord, si quelqu'un envoie des données sur votre site telles que $_POST['name']
, et que vous souhaitez utiliser cette valeur de retour sur le côté html, comme <p>The following string: {$_POST['name']} is invalid</p>
alors vous devriez toujours vous assurer que cette valeur a été à travers htmlspecialchars, cela protégera plus de tentatives XSS
Suivant est injection, si la valeur de $_POST['name']
va dans votre base de données, assurez-vous que vous utilisez mysql_real_escape_string sur cette valeur.
qui vous donnera 100% de protection contre l'injection sql, mais tout cela signifie que votre db ne peut pas exécuter les commandes de l'utilisateur, cela ne signifie pas que le texte est ce qu'il devrait être.
Les fonctions que vous devez toujours utiliser avant d'insérer des données dans votre base de données sont
Ceci est appelé validation et est seulement nécessaire pour yout pour vous assurer que les données que l'utilisateur soumet est ce que vous voulez, comme filter_var serait utilisé pour valider que l'e-mail qu'ils ont entré est un e-mail et pas seulement quelques-uns bla bla
Ce que je généralement tente ne faire est d'exécuter une fonction propre pour vous assurer que toutes les données d'imputation est propre avec htmlspecialchars
exemple:
function clean($array)
{
foreach($array as $key => $val)
{
if(is_array($val))
{
$array[$key] = clean($val); //Recursive
}else
{
$array[$key] = htmlspecialchars($val, ENT_QUOTES);
}
}
return $array;
}
faire la commande suivante pour vous assurer que votre coffre-fort de XSS:
$_GET = clean($_GET);
$_POST = clean($_POST);
donc, si quelqu'un a essayé de présenter <a href='test'>Test</a>
la valeur serait convertie en <a href='test'>Test</a>
Excellente explication! Merci pour la fonction aussi :) Pensez-vous que 'FILTER_SANITIZE_SPECIAL_CHARS' est une meilleure alternative à la fonction ou aura le même résultat? – Noob
Non, Bien que ** FSSC ** soit très bon, je peux garantir que les deux autres fonctions sont les plus efficaces au sein de PHP. – RobertPitt