ÇÁ·Î±×·¡¹Ö
ù ÆäÀÌÁö ·£´ý ±Û ȸ¿ø°¡ÀÔ ·Î±×ÀÎ
ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-02 17:23:59
URL https://te31.com/rgr/view.php?id=study&no=2520 ¸ð¹ÙÀÏ È­¸é
html ÅÂ±× À̺¥Æ® ÇÔ¼ö ÀüºÎ Á¦°ÅÇÏ´Â ¹æ¹ýÀÌ ÀÖÀ»±î¿ä?

»ç¿ëÀÚ¿¡°Ô ű׸¦ ÀԷ¹޾Ƽ­
»Ñ·ÁÁÖ´Â È­¸éÀε¥

¿¹¸¦µé¾î À̹ÌÁö ű׸¸ Çã¿ëÇÑ´Ù°í Çصµ

img src="E" on_error="alert('a');"

ÀÌ·± ÅÂ±× ³» ÇÔ¼ö´Â ½ÇÇàµÇ¾î¹ö¸®´õ¶ó±¸¿ä

ÀÌ·± ÇÔ¼ö ¸ðµÎ Á¦°ÅÇÒ ¼ö ÀÖÀ»±î¿ä?

Áú¹® | 1625¸íÀÌ Àоú¾î¿ä. 3.141.47.221

0
1 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-02 17:29:11
À̺¥Æ® ¼Ó¼ºµéÀ» ¹®ÀÚ¿­ º¯°æ Çعö¸®½ÃÁÒ.
2 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-02 17:54:16
1. html À» DOM ÆĽÌÇÑ´Ù. (java: HtmlCleaner, python: html-sanitizer µî)

2. tree Ž»öÀ¸·Î DOM ³»ÀÇ ¸ðµç node ¸¦ ¹æ¹®Çϸ鼭 onXXX ·ù attribute µéÀ» Á¦°ÅÇÑ´Ù.

3. DOM À» html ÆÄÀÏ·Î ´Ù½Ã Ãâ·ÂÇÑ´Ù. (stdout, file, socket, µî)
3 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-02 17:58:26
¹®ÀÚ¿­ º¯°æ°°Àº naïve ÇÑ ¹æ½ÄÀº broken HTML ·Î ÀÎÇÑ ´Ù¸¥ °Ë»ç¸¦ ÇÇÇÒ ¼ö ÀÖ´Â ¹®Á¦µéÀÌ ÀÖÀ¸´Ï ¾ÈÇÏ´Â°Ô ÁÁ½À´Ï´Ù. ¿¹¸¦µé¾î ¾Æ·¡¿Í °°Àº ÀÔ·ÂÀÌ µé¾î¿ÔÀ»¶§

on_error="js1;
js2; js3"

ÇÊÅ͸µ±ÔÄ¢À» on_error=".*"$ °°Àº Á¤±Ô½ÄÀ¸·Î Çص״ٸé ÁٹٲÞÇÑ ´ÙÀ½ űװ¡ ±×´ë·Î ½ÇÇàµÇ¾î¹ö¸®´Â ¹®Á¦°¡ ÀÖÀ½. »ç¿ëÀÚ ÀÔ·ÂÀ» Àû´çÈ÷ ÀçÃâ·ÂÇÏ´Â ¾Û¿¡ ÇÊ¿äÇÑ ±â´É°°Àºµ¥¿ä, Àú·±µ¥´Ù°¡ ¾ÇÀÇÀûÀÎ js ¸¦ ½É´Â °ø°ÝÀÌ °¡´ÉÇØ¿ä. ÇãÁ¢ÇÑ »çÀÌÆ®µé ´ëºÎºÐ »ç¿ëÀÚ ÀÔ·ÂÀ» ±²ÀåÈ÷ naïve ÇÑ ¹æ½ÄÀ¸·Î ó¸®ÇÏ´Â °æ¿ì°¡ ¸¹Àºµ¥ °ø°ÝÀÚµéÀº °¡Â÷¾ø½À´Ï´Ù. ¹Ýµå½Ã »ç¿ëÀÚ ÀÔ·ÂÀ» ±ò²ûÇÏ°Ô Á¤¸®(sanitisation) ÈÄ ¹®ÀÚ¿­ º¯°æ¹æ½ÄÀ» ¾²´ø, DOM ¼öÁ¤À» ÇÏ´ø°¡ ÇÏ´Â°Ô ¾ÈÀüÇÕ´Ï´Ù.
4 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-02 18:24:01
´äº¯ °¨»çÇÕ´Ï´Ù.

onXXX À¸·Î Á¢±Ù ¸»°í ´Ù¸¥ ¹æ¹ýÀ¸·Î ÇÔ¼ö°¡ ½ÇÇàµÇ´Â °æ¿ì´Â ¾øÀ»±î¿ä?

mouseover´Â ¾ÈµÇ´Â°Å·Î È®ÀÎÇϱä Çߴµ¥ ºñ½ÁÇÑ Á¦°¡ ¸ð¸£´Â ´Ù¸¥ À̺¥Æ®°¡ ÀÖÀ»±î ½Í¾î¼­¿ä
5 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-02 18:55:46
var tag = $('<img style=max-width:320px; src="E" onclock="console.log(\'a\');">');
$.each(tag[0].attributes, function(){
console.log(typeof this);
});

ÀÌ·¸°ÔÇصµ ¿ÀºêÁ§Æ®·Î ³ª¿Í¹ö¸®³×¿ä ²¬²¬..
6 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-02 18:59:14
Node ¿ÀºêÁ§Æ®¾Æ´Ñ°¡¿©? attributes["onclock"] ÀÖ³ªº¸½ÃÁ® ±×°Å Áö¿ì°í toString °á°ú¸¦ innerHTML ·Î ¹Ù²Ù½É µÉµíÇѵ¥¿ä
7 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-02 19:00:22
https://developer.mozilla.org/en-US/docs/Web/API/Node
8 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-02 19:19:48
jquery °¡´ÉÇÏ¸é ±¸³É $().off() Çϸé À̺¥Æ® ´Ù ¾ð¹ÙÀÎµå µÇÁö ¾Ê³ª¿µ?
10 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-02 21:55:04
tag.parent.replaceChild(tag.clone(true), tag);
11 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-05 09:37:21
´ä6 attributes¿¡ src, onclock ÀÌ Æ÷ÇԵǾîÀÖ¾î¿ä
Á¦°¡ ÇÏ°í½ÍÀº°Ç this¿¡ onclock(±× ¿Ü onÀ̺¥Æ®(ȤÀº ´õ ÀÖÀ» Á¦°¡ ¸ð¸£´Â À̺¥Æ®)) ÀÇ typeÀÌ function ÀÏ °æ¿ì Á¦°Å ÇÏ°í½Í½À´Ï´Ù.

´ä8 off´Â ű׿¡ À̺¥Æ® µû·Î ºÙ¿´À»°æ¿ì ÇØÁ¦ µÇ´Â°Í °°¾Æ¿ä

´ä10 ÀÌÇظ¦ Àß ¸øÇß¾î¿ä
12 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-05 10:23:03
if (typeof(eval(node.attributes["onclock"])) == "function") then...
13 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-05 16:37:24
´ä12/ ÇØ´ç °á°ú°¡ functionÀÌ ¾Æ´Ï°í object·Î ³ª¿Í¿ä
14 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-05 23:47:40
https://stackoverflow.com/questions/5999998/how-can-i-check-if-a-javasclipt-variable-is-function-type

±× ¿Ü¿¡µµ js °ü·Ã ·¹ÆÛ·±½º´Â MDN ¹®¼­ Âü°íÇϼ¼¿©
15 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-06 00:01:52
Àß µÇ´Âµ­

var tag = $('<img style=max-width:320px; src="E" onclock="console.log(\'a\');">');
$.each(tag[0].attributes, function(){
// ATTR Node object
// https://developer.mozilla.org/en-US/docs/Web/API/Attr
if (this.name === "onclock") {
this.value = ""
}
});
16 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-06 09:04:35
´ä15// this.name === "onclock" ÀÌ ºÎºÐÀ»
nameÀ» onclockÀ¸·Î ºñ±³ÇÏ°í½ÍÀº°Ô ¾Æ´Ï°í
this ÀÇ typeÀÌ function ÀÏ °æ¿ì·Î ºñ±³Çؼ­ Á¦°¡ ¸ð¸¦ ÇÔ¼ö°°Àº°Íµµ Àâ°í½ÍÀº ±×·±°ÍÀÌ¿¡¿ä
17 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-06 10:34:26
Attr Node ´Â Object Áö function ÀÌ µÉ ¼ö ¾ø½À´Ï´ç... Á¦ ´äº¯Àº ¿©±â±îÁö
18 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-06 10:36:49
¿ä°Å º¸°í ´Ù ±¸ÇöÇϴ°Š¸»°ï ´ä¾øÀ½

https://developer.mozilla.org/en-US/docs/Web/Events
19 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-06 10:53:39
µµ¿ò °¨»çÇÕ´Ï´Ù
20 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-08 01:27:31
11/ ³ëµå¸¦ Ŭ·ÐÇÏ¸é ³ëµå ÀÚü´Â º¹»çµÇ´Âµ¥, ¿øº» ³ëµå¿¡ ´Þ¸° À̺¥Æ® ¸®½º³Ê±îÁö º¹»çµÇÁø ¾Ê¾Æ¿ä.
±×·¡¼­ º¹»çÇÑ ³ëµå¿Í ¿øº» ³ëµå¸¦ ±³Ã¼Çϸé À̺¥Æ® ¸®½º³Ê¸¦ Á¦°ÅÇÑ È¿°ú°¡ ³ªÅ¸³³´Ï´Ù.
21 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-08 09:04:36
´ä20 Àú±â tag¶ó´Â°Ç Å×½ºÆ®·Î ¸¸µé·Á°í ÇÑ°Ô ¾Æ´Ï°í
ÁøÂ¥ tag¶ó´Â º¯¼ö¿¡ html tag³»¿ëÀ» stringÀ¸·Î ¹Þ¾Æ¿Í¼­
jquery·Î ³ëµå¸¦ ¸¸µé±â ¶§¹®¿¡ parent¶ó´øÁö ±âÁ¸ ³ëµå°¡ ¾ø¾î¿ä
³ëµå ¸¸µå´Â ½ÃÁ¡¿¡ on À̺¥Æ® ȤÀº ±×¿ÜÀÇ À̺¥Æ®°¡ ÀÖ´Ù¸é ±×°É ¾ø¾Ö°í ½ÍÀº°Ì´Ï´Ù
22 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-08 09:25:51
¾ÖÃÊ¿¡ html ¼Ò½º°¡ ÀÖ´Ù¸é jquery¿¡ ´ã±â Àü¿¡ ¹®ÀÚ¿­ Áö¿ì¸é ¾ÈµÉ±î¿ä?

htmlSourceString.replace(/on.+?=\s?('|")[^\1]+\1/gi, "");

¾Æ´Ô, jquery ÀÛ¾÷ ÈÄ¿¡ ´ä20 ¹æ½ÄÀ¸·Î ÇÑ ¹ø ´õ µ¹¸®´ø°¡...
23 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-08 09:40:46
´ä22/
À̺¥Æ®°¡ onÀ¸·Î ½ÃÀÛµÇ´Â°Í ¹Û¿¡ ¾ø´Ù¸é ±×°Ô ¸Â´Âµ¥¿ä
Ȥ½Ã³ª ´Ù¸¥ À̺¥Æ®(ȤÀº ´Ù¸¥ ÇÔ¼ö°¡ ¼±¾ð °¡´ÉÇÏ´Ù´øÁö)°¡ ÀÖ´ÂÁö Àǽɽº·´½À´Ï´Ù.
jquery ÀÛ¾÷ ÈÄ¿¡ html ºÙÀÎ µÚ¶ó¸é ÀÌ¹Ì onroad°°Àº ÇÔ¼ö°¡ ½ÇÇàµÈ µÚ¶ó¼­ Àǹ̾øÀ»°Å°°½À´Ï´Ù.
24 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-08 10:24:28
MDN ¸µÅ©¿¡ ÀÖ´Â event attr °¹¼ö¸¸ ºÁµµ ÀÌ°Ô rule·Î ¾î¶»°Ô ÇÒ ¼ýÀÚ°¡ ¾Æ´Ï¶õ°Ô º¸À̴µ¥ ÀÌÂëµÇ¸é

'¸ðµç À̺¥Æ® attr À» Á¦°Å(blacklisting)' ¶ó´Â ¿ä±¸»çÇ×À» 'Çã¿ë¿ÜÀÇ attrÀº ÀüºÎ Á¦°Å(whitelisting)' ·Î ¹Ù²Ù´Â°Ô ³ª¾Æº¸À̴µ¥¿ä...
25 ºñ°ø°³ ¼Õ´Ô ¡¦ 2018-02-08 10:28:42
´ä24
±×·¸°Ô ³ë¼± µ¹·Á¾ßÇÒ°Å°°½À´Ï´Ù..
´ñ±ÛÀ» ÀÛ¼ºÇÏ½Ç ¼ö ¾ø½À´Ï´Ù.
(±ÇÇÑÀÌ ¾ø´Â ȸ¿ø·¹º§)
¸ñ·ÏÀ¸·Î
ÀÌ¿ë¾à°ü | ±¤°í/Á¦ÈÞ | °³ÀÎÁ¤º¸Ãë±Þ¹æħ | ¹®ÀÇ/½Å°í | ¸ð¹ÙÀÏ TE31 | ¼­¹ö ºÎÇÏ : 16.5%
½Ç½Ã°£ Issue Ä¿¹Â´ÏƼ TE31 [¾ËÁö·Õ] ¨Ï 2002-2024
TOP arrow_upward