Rumah > Soal Jawab > teks badan
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
PHP中文网2017-05-16 13:03:20
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
的类库,如
如果是JSON
格式的字符串的话直接存就行了
避免SQL
注入请使用PDO
的预处理 http://php.net/manual/zh/book...
贴段简单的防XSS
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,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,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;
}
PHPz2017-05-16 13:03:20
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