javascript - Bagaimana untuk menyimpan kod HTML dalam pangkalan data
怪我咯
怪我咯 2017-05-16 13:01:20
0
2
418

Kini terdapat 3 soalan:

  • Jika saya mempunyai kod HTML berikut yang perlu disimpan dalam medan tertentu dalam jadual pangkalan data, adakah saya perlu menyimpannya secara langsung? Atau adakah saya perlu mengekodnya dan kemudian menyimpannya? Minta nasihat kepada Tuhan! Jika anda ingin mengekod, kaedah manakah yang harus digunakan? Sila berikan saya kod khusus, terima kasih

<!-- Butang JiaThis BERMULA -->
<script type="text/javascript" src="http://v3.jiathis.com/code/jiathis_r.js?move=0" charset="utf-8"></script>
<!-- Butang JiaThis TAMAT -->
  • Jika saya mempunyai rentetan dalam format JSON yang saya mahu simpan ke medan dalam jadual pangkalan data, adakah saya perlu mengekodnya sebelum menyimpannya? Atau deposit terus?

  • Adakah terdapat perkara lain yang perlu diberi perhatian semasa menyimpan data dalam pangkalan data? Tolong beri saya nasihat, terima kasih

怪我咯
怪我咯

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

membalas semua(2)
Ty80
  1. Kodhtml secara amnya menggunakan stripcslashes untuk melarikan serpihannya ke dalam pustaka, bawa keluar dan gunakan addcslashes untuk memulihkannya dan cari beberapa yang terbuka penapisan sumber pustaka kelas xss , seperti html 代码一般使用 stripcslashes 对其片段转义入库,取出用addcslashes 还原,找一些开源的过滤 xss 的类库,如

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

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

贴段简单的防XSS

🎜Jika ia adalah rentetan dalam format JSON, simpan sahaja terus🎜 🎜🎜Untuk mengelakkan suntikan SQL, sila gunakan prapemprosesan PDO http://php.net/manual/zh/book...🎜 🎜Siarkan cara mudah untuk menghalang 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

Pertama, memperkenalkan js ke dalam kod dan menyimpannya terus dalam pangkalan data tanpa memprosesnya adalah tingkah laku yang sangat tidak rasional. Sila selesaikannya dengan cara berikut
1: Tukar maklumat, htmlspecialchars dan html kepada entiti, dan kemudian simpannya dalam pangkalan data. Kaedah ini malas dan mudah untuk memintas
2: Gunakan ungkapan biasa untuk mendapatkan kandungan src dan simpan dalam pangkalan data

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan