**XSS (Cross-Site Scripting 크로스 사이트 스크립팅)** 은 사용자가 입력할 수 있는 폼이나 URL의 파라미터 값을 통해 악의적인 코드를 삽입하여 쿠키를 갈취하거나 악성 코드를 실행하는 것을 말합니다.  > 사이트 간 스크립팅(또는 크로스 사이트 스크립팅, 영문 명칭 cross-site scripting, 영문 약어 XSS)은 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다. > 주로 여러 사용자가 보게 되는 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이루어진다. > 이 취약점은 웹 애플리케이션이 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 나타난다. > 이 취약점으로 해커가 사용자의 정보(쿠키, 세션 등)를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 하거나 할 수 있다. > 주로 다른 웹사이트와 정보를 교환하는 식으로 작동하므로 사이트 간 스크립팅이라고 한다. > ##### [사이트 간 스크립팅 - Wikipedia](https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8C%85) <br> 기본적으로 이는 태그, 특히 스크립트 태그를 통해 삽입되어 지는데요. 태그를 여는 `<` 를 `<` 로 `>` 를 `>` 로 표현함으로써 브라우저가 진짜 태그가 아닌 문자 형태의 `<` 와 `>` 로 인식하게 할 수 있습니다. <br> 이 방법으로 XSS 필터링을 해줄 수 있습니다. ```javascript function XSSFilter(content) { return content.replace(/</g, "<").replace(/>/g, ">"); } ``` <br> 기본 원리는 이와 같이 실제 태그가 아닌 문자로 변경해줌으로써 태그나 코드를 주입 못하게 하는 것인데요. 사실 저 2개만으로는 XSS 공격을 제대로 막기에는 좀 부족합니다. 실제로 좀 더 확실한 방법으로 필터링 하고자 한다면 기존에 있는 오픈소스를 이용하는 것이 좋습니다. > 여기서 저는 js-xss 라는 오픈소스를 선택하였습니다. > GitHub: https://github.com/leizongmin/js-xss #### Browser ```xml <script src="https://cdnjs.cloudflare.com/ajax/libs/js-xss/0.3.3/xss.min.js"></script> <script> var html = filterXSS('<script>alert("xss");</scr' + 'ipt>'); alert(html); </script> ``` #### Node.js ```javascript var xss = require('xss'); var html = xss('<script>alert("xss");</script>'); console.log(html); ``` Node.js 의 장점이 Front-end와 Back-end 언어가 같다는 점을 생각하면 이 코드는 HTML + CSS + JavaScript 또는 Node.js 양쪽 모두에서 동일하게 사용할 수 있습니다.
author | inspiredjw |
---|---|
permlink | node-js-xss |
category | technology |
json_metadata | {"tags":["technology","kr","security","internet","kr-dev"],"image":["https://steemitimages.com/DQmcS5P94gcjVRLd6N44opYVzouqzNENSwzVQ5gUfB2qaRD/image.png"],"links":["https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8C%85","https://github.com/leizongmin/js-xss"],"app":"steemit/0.1","format":"markdown"} |
created | 2017-06-22 08:50:03 |
last_update | 2017-06-22 16:11:33 |
depth | 0 |
children | 2 |
last_payout | 2017-06-29 08:50:03 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 16.206 HBD |
curator_payout_value | 4.620 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 1,722 |
author_reputation | 836,711,962,277 |
root_title | "웹브라우저 및 Node.js 에서 XSS 공격 막기" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 5,605,239 |
net_rshares | 1,570,575,084,548 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
woo7739 | 0 | 143,252,510,312 | 10% | ||
morning | 0 | 192,811,408,255 | 50% | ||
fyrstikken | 0 | 109,382,534,279 | 0.05% | ||
kdj | 0 | 448,107,588,579 | 50% | ||
gotoperson | 0 | 54,558,978,377 | 1% | ||
agile | 0 | 2,898,683,188 | 100% | ||
iamstevechang | 0 | 51,805,366,960 | 100% | ||
coinkorea | 0 | 566,870,064,582 | 5% | ||
chocomuscake | 0 | 354,028,617 | 100% | ||
inspiredjw | 0 | 533,921,399 | 100% |
글 감사합니다^^ 개발 태그로 #kr-dev 태그를 추가하시면 더 많은 분들이 보실 수 있을 것 같습니다 :)
author | coinkorea |
---|---|
permlink | re-inspiredjw-node-js-xss-20170622t115134394z |
category | technology |
json_metadata | {"tags":["kr-dev","technology"],"app":"steemit/0.1"} |
created | 2017-06-22 11:51:33 |
last_update | 2017-06-22 11:51:33 |
depth | 1 |
children | 0 |
last_payout | 2017-06-29 11:51:33 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 61 |
author_reputation | 34,890,178,701,093 |
root_title | "웹브라우저 및 Node.js 에서 XSS 공격 막기" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 5,619,468 |
net_rshares | 0 |
점점 Steemit에도 전문성있는 글들이 많이 생겨나네요 ㅎㅎ
author | iamstevechang |
---|---|
permlink | re-inspiredjw-node-js-xss-20170622t090324832z |
category | technology |
json_metadata | {"tags":["technology"],"app":"steemit/0.1"} |
created | 2017-06-22 09:03:24 |
last_update | 2017-06-22 09:03:24 |
depth | 1 |
children | 0 |
last_payout | 2017-06-29 09:03:24 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.674 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 34 |
author_reputation | 16,755,017,489,957 |
root_title | "웹브라우저 및 Node.js 에서 XSS 공격 막기" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 5,606,178 |
net_rshares | 50,969,796,525 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
iamstevechang | 0 | 50,969,796,525 | 100% |