javascript - Comment stocker du code HTML dans une base de données
怪我咯
怪我咯 2017-05-16 13:01:20
0
2
411

Il y a maintenant 3 questions :

  • Si j'ai le code HTML suivant qui doit être stocké dans un certain champ de la table de la base de données, dois-je l'enregistrer directement ? Ou dois-je l'encoder puis l'enregistrer ? Demandez conseil à Dieu ! Si vous souhaitez encoder, quelle méthode utiliser ? Merci de me donner le code spécifique, merci

<!-- Bouton JiaThis COMMENCER --->
<script type="text/javascript" src="http://v3.jiathis.com/code/jiathis_r.js?move=0" charset="utf-8"></script>
<!-- Bouton JiaThis FIN -->
  • Si je souhaite enregistrer une chaîne au format JSON dans un champ d'une table de base de données, dois-je l'encoder avant de l'enregistrer ? Ou déposer directement ?

  • Y a-t-il autre chose auquel il faut prêter attention lors du stockage des données dans la base de données ? S'il vous plaît, donnez-moi quelques conseils, merci

怪我咯
怪我咯

走同样的路,发现不同的人生

répondre à tous(2)
Ty80
  1. Le code html utilise généralement des stripcslashes pour échapper ses fragments dans la bibliothèque, les retirer et utiliser des addcslashes pour les restaurer, et en trouver des ouverts bibliothèque de classes xss de filtrage de source, telle que html 代码一般使用 stripcslashes 对其片段转义入库,取出用addcslashes 还原,找一些开源的过滤 xss 的类库,如

  2. 如果是JSON格式的字符串的话直接存就行了

  3. 避免SQL注入请使用PDO的预处理 http://php.net/manual/zh/book...

贴段简单的防XSS

🎜S'il s'agit d'une chaîne au format JSON, enregistrez-la simplement directement🎜 🎜🎜Pour éviter l'injection SQL, veuillez utiliser le prétraitement de PDO http://php.net/manual/zh/book...🎜 🎜Publiez un moyen simple d'empêcher le XSS🎜
<?php  
function RemoveXSS($val) {  
   // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed  
   // this prevents some character re-spacing such as <javarrreeescript>  
   // note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs  
   $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);  

   // straight replacements, the user should never need these since they're normal characters  
   // this prevents like <IMG SRC=@avascript:alert('XSS')>  
   $search = 'abcdefghijklmnopqrstuvwxyz'; 
   $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';  
   $search .= '1234567890!@#$%^&*()'; 
   $search .= '~`";:?+/={}[]-_|\'\'; 
   for ($i = 0; $i < strlen($search); $i++) { 
      // ;? matches the ;, which is optional 
      // 0{0,7} matches any padded zeros, which are optional and go up to 8 chars 

      // @ @ search for the hex values 
      $val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ; 
      // @ @ 0{0,7} matches '0' zero to seven times  
      $val = preg_replace('/(&#0{0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ; 
   } 

   // now the only remaining whitespace attacks are \t, \n, and \r 
   $ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base'); 
   $ra2 = Array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload'); 
   $ra = array_merge($ra1, $ra2); 

   $found = true; // keep replacing as long as the previous round replaced something 
   while ($found == true) { 
      $val_before = $val; 
      for ($i = 0; $i < sizeof($ra); $i++) { 
         $pattern = '/'; 
         for ($j = 0; $j < strlen($ra[$i]); $j++) { 
            if ($j > 0) { 
               $pattern .= '(';  
               $pattern .= '(&#[xX]0{0,8}([9ab]);)'; 
               $pattern .= '|';  
               $pattern .= '|(&#0{0,8}([9|10|13]);)'; 
               $pattern .= ')*'; 
            } 
            $pattern .= $ra[$i][$j]; 
         } 
         $pattern .= '/i';  
         $replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2); // add in <> to nerf the tag  
         $val = preg_replace($pattern, $replacement, $val); // filter out the hex tags  
         if ($val_before == $val) {  
            // no replacements were made, so exit the loop  
            $found = false;  
         }  
      }  
   }  
   return $val;  
} 
PHPzhong

Premièrement, introduire js dans le code et le stocker directement dans la base de données sans le traiter est un comportement très irrationnel. Veuillez le résoudre de la manière suivante
1 : convertissez les informations, les caractères htmlspecialchars et le html en entités, puis enregistrez-les dans la base de données. Cette méthode est paresseuse et facile à contourner
2 : utilisez des expressions régulières pour obtenir le contenu de src et enregistrez-le dans la base de données

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal