๋ธ๋ก๊ทธ์์ ๋์งํธ ์ง๋ฌธ(Digital Fingerprinting) ๋์ ๊ณผ ์ฝํ ์ธ ๋ณต์ ๋ฐฉ์ง
๋ธ๋ก๊ทธ ์ฝํ ์ธ ๋ฌด๋จ ๋ณต์ ๋ฐฉ์ง๋ฅผ ์ํ ๋์งํธ ์ง๋ฌธ(Digital Fingerprinting) ๊ธฐ์ ๋์ ๋ฐฉ๋ฒ๊ณผ ํฐ์คํ ๋ฆฌ ํ๊ฒฝ์ ์ต์ ํ๋ ํ์ค์ ์ธ HTML/CSS/JavaScript ๊ธฐ๋ฐ ์ถ์ ๋ฐ ์ ์๊ถ ๋ณดํธ ๋ฐฉ๋ฒ์ ์์๋ณผ๊ป์!
๋ธ๋ก๊ทธ ์ด์ ์ ๊ฐ์ฅ ํฐ ๊ณ ๋ฏผ ์ค ํ๋๋ ์ฝํ ์ธ ๋ฌด๋จ ๋ณต์ ์ ๋๋ค. ๋์งํธ ์ง๋ฌธ(Digital Fingerprinting) ๊ธฐ๋ฒ์ ํ์ฉํ๋ฉด ๋ณต์ ๋ ๊ธ์ ์๋ณธ ์ถ์ฒ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ถ์ ํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ HTML/CSS/JavaScript ๊ธฐ๋ฐ์ ํฐ์คํ ๋ฆฌ ์คํจ ํธ์ง๋ง์ผ๋ก๋ ๊ฐ๋จํ ์ถ์ ์ด ๊ฐ๋ฅํ๋ฉฐ, ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์๋ฒ ์ธก ์ ๊ทผ์ด๋ ์ด๋ฏธ์ง๋์์ ํ์ผ ์์ฒด ๋ณ์กฐ ๋ฐฉ์๊น์ง ํ์ฉํ์ฌ ์ ์๊ถ ๋ณดํธ์์ค์ ๊ทน๋ํํ ์ ์์ต๋๋ค.
ํ์ง๋ง ํฐ์คํ ๋ฆฌ์ ๊ฐ์ ๋ธ๋ก๊ทธ ํ๋ซํผ์ ๊ตฌ์กฐ์ ์ ํ(์๋ฒ ํ์ผ ์ ๊ทผ ๋ถ๊ฐ)์ด ์์ด ์์ ํ ํํ์ ์ง๋ฌธ ์ฝ์ ์ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ชฉ์ ์ ๊ทผ์ ํ ๋ช ๊ฐ์ง ๊ธฐ์ ์ ์ ๊ทผ๋ฒ์ SEO ์ต์ ํ๋ฅผ ํด์น์ง ์์ผ๋ฉด์ ์ถฉ๋ถํ ํ์ฉ ๊ฐ๋ฅํฉ๋๋ค. ์๋์์ ๋์งํธ ์ ์๊ถ ๊ด๋ฆฌ(DRM) ์ฐจ์์ ์ ๊ทผ๋ฒ๊ณผ ์ฐจํ์ถ์ ์ ๋ต์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํ ์คํธ ์ฝํ ์ธ ์ง๋ฌธ ์ฝ์ (Text Digital Fingerprinting) ์์ธ ๋ถ์
ํ ์คํธ ๊ธฐ๋ฐ ์ง๋ฌธ ์ฝ์ ์ ๋ธ๋ก๊ทธ ๋ณต์ ๋ฐฉ์ง์์ ๊ฐ์ฅ ํ์ค์ ์ด๊ณ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ด๋ฉฐ, ์ฝํ ์ธ ์์ฒด์ ๋์ ๋์ง ์๋ ๊ณ ์ ํจํด์ ์ฝ์ ํ์ฌ ์๋ณธ ์ถ์ฒ๋ฅผ ์ถ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ๋ฐฉ์์ ๋ณต์ ์๊ฐ ์์ํ ํ ์คํธ๋ง ๋ณต์ฌํ๋ค๊ณ ์ฐฉ๊ฐํ ๋ ํจ๊ณผ์ ์ ๋๋ค.
| ๊ธฐ์ | ๋ฐฉ๋ฒ ์์ธ | ๋์ด๋ | ํจ๊ณผ ๋ฐ SEO/์ถ์ ํ๊ณ ํ์ฅ |
|---|---|---|---|
| ์ ๋ก ํญ ๊ณต๋ฐฑ ๋ฌธ์ (Zero-Width Space) | ๋ณธ๋ฌธ ํ
์คํธ์ ํน์ ์์น(๋ฌธ์ฅ ๋, ์ผํ ๋ค)์ #8203; ๊ฐ์ ํฌ๋ช
์ ๋์ฝ๋ ๋ฌธ์(U+200B)๋ฅผ ์ฝ์
ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ธ๋ก๊ทธ URL์ด๋ ํฌ์คํธ ID๋ฅผ ์ด์ง(Binary) ํจํด์ผ๋ก ์ธ์ฝ๋ฉํ์ฌ ์ง๋ฌธ์ผ๋ก ํ์ฉํฉ๋๋ค. |
์ค | ํจ๊ณผ: ์ก์์ผ๋ก ์ ํ ๋ณด์ด์ง ์์ ๋ณต์ ์๊ฐ ์ ๊ฑฐํ๊ธฐ ๊ทน๋๋ก ์ด๋ ต์ต๋๋ค. ๊ฒ์ ์์ง์ ์ด ๋ฌธ์๋ฅผ ๋ฌด์ํ๋ฏ๋ก SEO์ ์ํฅ์ด ์์ต๋๋ค. ์๋ณธ ์ ์ฆ์ ๊ฐ๋ ฅํ ์ฆ๊ฑฐ๊ฐ ๋ฉ๋๋ค. |
| ํ๊ณ: ํ ์คํธ ์ ์ (Clean-up) ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ ๊ฑฐ๋ ์ ์์ผ๋ฉฐ, ํจํด์ด ๋จ์ํ ๊ฒฝ์ฐ ๋ณต์ ์๊ฐ ์ญ๋ถ์ํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. | |||
| ๋ฏธ๋ฌํ CSS ์คํ์ผ ๋ณํ (Micro-styling) | ๋ณธ๋ฌธ ์ค ํน์ ๋จ์ด ๋๋ ๊ตฌ(Phrase)์ ๊ณ ์ ํ ํด๋์ค ์ด๋ฆ(์: data-post-id-123)์ ๋ถ์ฌํ๊ณ , ๋ฏธ์ธํ CSS ,html ์ฝ๋ (์: letter-spacing: 0.0001em; ๋๋ font-variant-ligatures: none;)๋ฅผ ํตํด ์๋ณธ ์ถ์ฒ ์ ๋ณด๋ฅผ ์ธ์ฝ๋ฉํฉ๋๋ค. |
์ | ํจ๊ณผ:HTML์ ๊ทธ๋๋ก ๋ณต์ฌํด๋ ์คํ์ผ ์ ์๊ฐ ์ ์ง๋์ด ์ง๋ฌธ์ด ๋ณด์กด๋ฉ๋๋ค. ์น ๊ธฐ๋ฐ ๋๊ตฌ๋ก ๋ณต์ ํด๋ ์ถ์ ํ๊ทธ๊ฐ ๋จ์์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. |
| ํ๊ณ: ์์ ํ ์คํธ๋ก๋ง ๋ณต์ฌํ๊ฑฐ๋ ๋ณต์ ์๊ฐ HTML์ ๊ฑท์ด๋ด๊ณ CSS๋ฅผ ์ ๊ฑฐํ๋ฉด ๋ฌด๋ ฅํ๋ฉ๋๋ค. ํฌ๋กค๋ฌ์ ๋ ๋๋ง ๋ฐฉ์์ ๋ฐ๋ผ ๊ทน๋ฏธ์ธํ CSS ๋ณ๊ฒฝ์ด ํฌ๋ฏธํ SEO ์ํฅ์ ์ค ๊ฐ๋ฅ์ฑ์ ์์ต๋๋ค | |||
์ด๋ฏธ์ง ๋ฐ ์๊ฐ ์ฝํ ์ธ ์ง๋ฌธ ์ฝ์ (Visual Digital Fingerprinting)์ ๊ณ ์ฐฐ
์ด๋ฏธ์ง ๊ธฐ๋ฐ ์ง๋ฌธ ์ฝ์ ์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ์ถ์ ๋ฐ ๋ณต์ ๋ฐฉ์ง ๊ธฐ๋ฒ์ด์ง๋ง, ํฐ์คํ ๋ฆฌ ํ๊ฒฝ์์๋ ์๋ฒ ์ ๊ทผ ์ ํ ๋๋ฌธ์ ๊ตฌํ ๋์ด๋๊ฐ ๋๊ณ ์ธ๋ถ ์ธํ๋ผ๋ฅผ ์๊ตฌํฉ๋๋ค.
| ๊ธฐ์ | ๋ฐฉ๋ฒ ์์ธ | ๋์ด๋ | ํจ๊ณผ ๋ฐ ๊ตฌํ ํ๊ณ ํ์ฅ |
|---|---|---|---|
| ์คํ ๊ฐ๋ ธ๊ทธ๋ํผ ๊ธฐ๋ฐ ์ํฐ๋งํน (Steganography) | ์ด๋ฏธ์ง ํ์ผ์ ํฝ์ ๋ฐ์ดํฐ ์ค ์ธ๊ฐ์ ๋์ผ๋ก ์ธ์ง ๋ถ๊ฐ๋ฅํ ์ตํ์ ๋นํธ(Least Significant Bit, LSB)์ ๋ธ๋ก๊ทธ ID๋ ํฌ์คํธ ID๋ฅผ ๋ฏธ์ธํ๊ฒ ์ธ์ฝ๋ฉํฉ๋๋ค. | ์ต์ (๋ณ๋ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ์๋ฒ ๋ฐ API ํ์) | ํจ๊ณผ: ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์๋ ์ง๋ฌธ์ด ํ์ผ ์์ฒด์ ์ ์ง๋์ด ์๋ณธ ์ถ์ฒ ์ถ์ ์ด ๊ฐ๋ฅํ๋ฉฐ, ์ด๋ฏธ์ง ์ ์๊ถ ์นจํด ์ ์ฆ์ ๊ฐ์ฅ ๊ฐ๋ ฅํฉ๋๋ค. |
| ํ๊ณ: ํฐ์คํ ๋ฆฌ ์์ฒด ๊ธฐ๋ฅ์ผ๋ก๋ ๋ถ๊ฐ๋ฅํ๋ฉฐ, ์ธ๋ถ ์๋ฒ(์: AWS Lambda, Cloudflare Workers)์์ ์ด๋ฏธ์ง๋ฅผ ์ฒ๋ฆฌํ ํ ์ ๋ก๋ํด์ผ ํ๋ ๊ฐ๋ฐ ๋ฐ ๋น์ฉ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. | |||
SEO๋ฅผ ๊ณ ๋ คํ ์ด๋ฏธ์ง ๋์: ํ์ผ๋ช
๊ณผ Alt ํ๊ทธ์ ์๋ณธ ์ ๋ณด๋ฅผ ์ฝ์
ํ๋ ๊ฒ์ด ํ์ค์ ์
๋๋ค. ์ด๋ฏธ์ง ํ์ผ๋ช
์ ํฌ์คํธ ID(์: post-1234-keyword.jpg)๋ฅผ ํฌํจํ๊ณ Alt ํ๊ทธ์ ์๋ณธ URL์ ์ํธํํ์ฌ ์ฝ์
ํ๋ฉด, ์ด๋ฏธ์ง SEO์ ์ถ์ ๊ฐ๋ฅ์ฑ์ ๋์์ ๋์ผ ์ ์์ต๋๋ค.
ํฐ์คํ ๋ฆฌ ํ๊ฒฝ์ ๊ธฐ์ ์ ํ๊ณ ๊ทน๋ณต ๋ฐ ํ์ค์ ์ธ ์ฌํ ์ถ์ ๋์
ํฐ์คํ ๋ฆฌ ํ๊ฒฝ์ ๊ทผ๋ณธ์ ํ๊ณ์ ๊ทน๋ณต
ํฐ์คํ ๋ฆฌ๋ ์ฌ์ฉ์๊ฐ ์๋ฒ ์ธก ํ์ผ์ ์ ๊ทผํ๊ฑฐ๋ ์ฝํ ์ธ ์ ์ฅ ๋จ๊ณ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ์กฐํ ์ ์๋ ๊ถํ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ณ ๊ธ ์คํ ๊ฐ๋ ธ๊ทธ๋ํผ๋ ์๋ฒ ์ฌ์ด๋ ๋ก์ง(Server-Side Logic)์ด ํ์ํ ๊ธฐ๋ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ฐ๋ฆฌ์ ์ ๋ต์ ์ค์ง ํด๋ผ์ด์ธํธ ์ธก(๋ธ๋ผ์ฐ์ )์์ ์คํ ๊ฐ๋ฅํ HTML, CSS, JavaScript๋ฅผ ํ์ฉํ์ฌ ๋ณต์ ์์ ํ์ ์ ๋ ธ๋ฆฌ๋ ๊ฒ์ ๋๋ค.
ํ์ค์ ์ธ ์ฌํ ์ถ์ ๋ฐ ๋ณต์ ๋ฐฉ์ง ๋์ (JavaScript ๊ธฐ๋ฐ)
๋์งํธ ์ง๋ฌธ๋งํผ ๊ฐ๋ ฅํ์ง๋ ์์ง๋ง, ๋ณต์ ๋ฐฉ์ง ๋ฐ ์ฌํ ์ถ์ ์ ์ํด ํฐ์คํ ๋ฆฌ์์ ํ์ค์ ์ผ๋ก ์ ์ฉ ๊ฐ๋ฅํ๋ฉฐ SEO ์นํ์ ์ธ ๋ฐฉ๋ฒ๋ค์ ์กฐํฉํด์ผ ํฉ๋๋ค.
- ์จ๊ฒจ์ง ์ถ์ฒ ํ์ ๋งํฌ ์๋ ์ฝ์
(ํด๋ฆฝ๋ณด๋ ์ด๋ฒคํธ ํ์ฉ)
- ์๋ ์๋ฆฌ: JavaScript์
'copy'์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ฌ์ฉํ์ฌ, ์ฌ์ฉ์๊ฐ ๋ณธ๋ฌธ์ ๋ณต์ฌํ ๋ ๋์ ๋ณด์ด์ง ์๋ ์ถ์ฒ ๋งํฌ, ์ ์๊ถ ๊ฒฝ๊ณ , ๊ณ ์ ID ๋ฑ์ ํ ์คํธ๋ฅผ ํด๋ฆฝ๋ณด๋ ๋ฐ์ดํฐ์ ์๋์ผ๋ก ์ถ๊ฐํฉ๋๋ค. - ์ถ์ ํจ๊ณผ: ๋ณต์ ์๊ฐ ์ด ์ถ๊ฐ๋ ์ ๋ณด๋ฅผ ์ธ์ํ์ง ๋ชปํ๊ณ ๋ถ์ฌ๋ฃ์ผ๋ฉด, ๋ณต์ ๊ธ์๋ ์๋ณธ ์ถ์ฒ๊ฐ ๋ช ํํ ๊ธฐ๋ก๋ฉ๋๋ค.
- ์๋ ์๋ฆฌ: JavaScript์
- noindex ์์ญ ํ์ฉ (๊ฒ์ ์์ง ์์ธ ๋ฐฉ์ง ๋ฐ ๊ณ ์ ID ์จ๊น)
- ํ์ฉ ๋ฐฉ๋ฒ: ๋ณธ๋ฌธ ์ธ ์ ์๊ถ ๊ฒฝ๊ณ ๋ฌธ๊ตฌ, ๊ณ ์ ID ๋ฑ์ ๊ฐ์ ์ฌ์ฉ์ ์ ์ ํ๊ทธ์ CSS (
display: none๋๋visibility: hidden)๋ฅผ ์กฐํฉํ์ฌ ์จ๊น๋๋ค. - SEO ๊ด์ : ํฌ๋กค๋ฌ๋ ์ด ์์ญ์ ๋ฌด์ํ๋๋ก ์ ๋ํ ์ ์์ด ๋ณธ๋ฌธ ์ฝํ ์ธ ์ SEO ์ง์ค๋๋ฅผ ์ ์งํ๋ฉฐ, ๋ณต์ ์๊ฐ ์ด ์์ญ๊น์ง ๋ณต์ฌํ๋ฉด ์๋ณธ ์ถ์ฒ๋ฅผ ๋น ๋ฅด๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
- ํ์ฉ ๋ฐฉ๋ฒ: ๋ณธ๋ฌธ ์ธ ์ ์๊ถ ๊ฒฝ๊ณ ๋ฌธ๊ตฌ, ๊ณ ์ ID ๋ฑ์ ๊ฐ์ ์ฌ์ฉ์ ์ ์ ํ๊ทธ์ CSS (
- ๊ณ ์ ํ ์ฝ๋ ํจํด/ID ์ฝ์
(Searchable Identifier)
- ์ฝ์
ํ์: ํฌ์คํธ ์ํ๋จ์
POST-ID-TISTORY-XXXXX๊ฐ์ด ๊ณ ์ ์ถ์ ID๋ฅผ ์ฝ์ ํฉ๋๋ค. ์ด ID๋ ๋ณต์ ๋ ๊ธ์์ ๊ฒ์ํ์ ๋ ๋งค์ฐ ํฌ๊ทํ ๋ฌธ์์ด์ด๋ฏ๋ก ์๋ณธ ๊ธ์ ์ฐพ๋ ๋ฐ ๊ฒฐ์ ์ ์ธ ์ญํ ์ ํฉ๋๋ค.
- ์ฝ์
ํ์: ํฌ์คํธ ์ํ๋จ์
์ค์ JavaScript ์์ (ํ์ฅ๋ ๋ณต์ฌ ๋ฐฉ์ง ์คํฌ๋ฆฝํธ)
์๋ ์คํฌ๋ฆฝํธ๋ ํ์ด์ง ๋ก๋ ์ ๋์ ๋์ง ์๋ ์ง๋ฌธ์ ์ฝ์ ํ๊ณ , ๋ณต์ฌ ์ ํด๋ฆฝ๋ณด๋์ ์ถ์ฒ ๋ฐ ์ง๋ฌธ ์ ๋ณด๋ฅผ ์๋ ์ถ๊ฐํ์ฌ ๋ฌด๋จ ๋ณต์ ์ถ์ ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
script
document.addEventListener('DOMContentLoaded', function() {
// ํฐ์คํ ๋ฆฌ ๋ณธ๋ฌธ ์ปจํ
์ด๋ ์ ํ์ (์คํจ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์. ์ ํํ ์ง์ ํ์)
const contentContainerSelector = '.tt_article_useless_p_margin.contents_style';
const contentContainer = document.querySelector(contentContainerSelector);
// ์ฝํ
์ธ ๊ฐ ์๋ ๊ฒฝ์ฐ ๋๋ ์คํฌ๋ฆฝํธ ์คํ ๋ถํ์ ์ ์ค๋จ
if (!contentContainer) {
return;
}
// --------------------------------------------------------
// 1. ๋์ ๋์ง ์๋ ์ง๋ฌธ ์ฝ์
(ํ์ด์ง ๋ก๋ ์์ )
// --------------------------------------------------------
function insertHiddenFingerprint(copyTime = null) {
const currentUrl = window.location.href;
const timestamp = copyTime || new Date().toISOString();
// ๊ธฐ์กด ์ง๋ฌธ ์์๊ฐ ์๋ค๋ฉด ์ ๊ฑฐ (์ค๋ณต ๋ฐฉ์ง)
const existingFingerprint = document.getElementById('digital-fingerprint-trace');
if (existingFingerprint) existingFingerprint.remove();
// ์ง๋ฌธ ์ ๋ณด๋ฅผ ๋ด์ ์จ๊ฒจ์ง ์์ ์์ฑ (CSS๋ก ์๋ฒฝํ ์จ๊น)
const fingerprintElement = document.createElement('div');
fingerprintElement.id = 'digital-fingerprint-trace';
// ์ต์ํ์ ์ธ๋ผ์ธ ์คํ์ผ ์ ์ง: ์๋ฒฝํ ์จ๊ธฐ๊ธฐ ์ํ ํ์ CSS
fingerprintElement.style.cssText = 'position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0; pointer-events: none; white-space: nowrap; font-size: 0; color: transparent; z-index: -999;';
// ์ง๋ฌธ ๋ด์ฉ: URL + ์๊ฐ + ๊ณ ์ ID ํค์๋
const fingerprintContent = `
!-- Digital Fingerprint Trace Start --
COPYRIGHT-FINGERPRINT-ID-TISTORY | URL: ${currentUrl} | TIMESTAMP: ${timestamp}
!-- Digital Fingerprint Trace End --
`;
fingerprintElement.innerHTML = fingerprintContent;
// ๋ณธ๋ฌธ ๋งจ ํ๋จ์ ์ฝ์
contentContainer.appendChild(fingerprintElement);
}
// --------------------------------------------------------
// 2. ๋ณต์ฌ ์ ์๋ณธ ์ถ์ฒ ๋ฐ ์ง๋ฌธ ์๋ ์ถ๊ฐ (ํด๋ฆฝ๋ณด๋ ๋ณดํธ)
// --------------------------------------------------------
function enableCopyProtection() {
contentContainer.addEventListener('copy', function(e) {
const currentUrl = window.location.href;
const currentTitle = document.title.split(' :: ')[0].trim();
const selection = document.getSelection();
const copiedText = selection.toString();
// ๋ณต์ฌ ์๊ฐ ๋ฐ ์ต์ ๋ณต์ฌ ๊ธธ์ด ์ ํ
if (copiedText.length 50) return; // 50์ ๋ฏธ๋ง ๋ณต์ฌ๋ ๋ฌด์
const copyTime = new Date().toISOString();
// ๋ณต์ฌ ์ ํด๋ฆฝ๋ณด๋์ ์ฝ์
๋ ์ถ์ฒ ์ ๋ณด + ์ง๋ฌธ
const sourceInfo = `
\n\n[ ์๋ณธ ์ถ์ฒ ๋ฐ ๋์งํธ ์ง๋ฌธ ]
์ ๋ชฉ: ${currentTitle}
์๋ณธ ๋งํฌ: ${currentUrl}
๋ฌด๋จ ๋ณต์ ๋ฐฉ์ง ์๋ณ ์ฝ๋: COPYRIGHT-FINGERPRINT-ID-TISTORY | COPIED-AT: ${copyTime}
๋ณธ ๋ฌธ์๋ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ผ๋ฉฐ, ๋ฌด๋จ ๋ณต์ ๋ฐ ์์
์ ์ฌ์ฉ์ ์๊ฒฉํ ๊ธ์งํฉ๋๋ค.
`;
// ํด๋ฆฝ๋ณด๋์ ์๋ณธ ํ
์คํธ์ ์ง๋ฌธ/์ถ์ฒ ์ ๋ณด ์ถ๊ฐ
if (e.clipboardData) {
e.clipboardData.setData('text/plain', copiedText + sourceInfo);
e.preventDefault(); // ๊ธฐ๋ณธ ๋ณต์ฌ ๋์์ ๋ง๊ณ , ์ง๋ฌธ์ด ํฌํจ๋ ํ
์คํธ๋ก ๋์ฒด
// ํ์ด์ง์๋ ์จ๊ฒจ์ง ์ง๋ฌธ ์
๋ฐ์ดํธ (๋ณต์ฌ ์์ ๊ธฐ๋ก)
insertHiddenFingerprint(copyTime);
}
});
}
// --------------------------------------------------------
// ๋ชจ๋ ๊ธฐ๋ฅ ์ด๊ธฐํ
// --------------------------------------------------------
insertHiddenFingerprint(); // ํ์ด์ง ๋ก๋ ์ ์ด๊ธฐ ์ง๋ฌธ
enableCopyProtection(); // ํด๋ฆฝ๋ณด๋ ๋ณต์ฌ ๋ณดํธ ํ์ฑํ
});
/script
๋์งํธ ์ง๋ฌธ + ์ถ์ ํตํฉ ์ ๋ต ์์ฝ
ํฐ์คํ ๋ฆฌ ๋ธ๋ก๊ทธ ํ๊ฒฝ์์ ์ฝํ ์ธ ๋ฌด๋จ ๋ณต์ ๋ฅผ ๋ง๊ณ SEO๋ฅผ ๋ณดํธํ๊ธฐ ์ํ ์ต์ ์ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ค์ค ์ง๋ฌธ ์ ์ฉ: ์ ๋ก ํญ ๊ณต๋ฐฑ ๋ฌธ์(ํ ์คํธ) + ์จ๊ฒจ์ง HTML ์ฃผ์(์ฝ๋)์ ์ด์ค์ผ๋ก ์ ์ฉํ์ฌ ๋ณต์ ๋์ด๋๋ฅผ ๋์ ๋๋ค.
- ํด๋ฆฝ๋ณด๋ ๋ณดํธ: JavaScript๋ฅผ ํตํด ๋ณต์ฌ ์ ์๋ณธ ์ถ์ฒ์ ๊ณ ์ ID๋ฅผ ๊ฐ์ ๋ก ์ฒจ๋ถํ์ฌ ๋ณต์ ํ ์ถ์ ๊ฐ๋ฅ์ฑ์ ๊ทน๋ํํฉ๋๋ค.
- ์ฌํ ๊ด๋ฆฌ: ๋ณต์ ๊ธ ๋ฐ๊ฒฌ ์ ๊ณ ์ ํค์๋(
COPYRIGHT-FINGERPRINT-ID-TISTORY)๋ฅผ ์ด์ฉํ์ฌ ๊ฒ์ํ๊ณ , ๋ฐ๊ฒฌ๋ ์ง๋ฌธ์ ๊ทผ๊ฑฐ๋ก ์ ์๊ถ ์นจํด ๋์์ ์ ์ํ๊ฒ ์งํํฉ๋๋ค.
์ด์ ๊ฐ์ ๋์งํธ ์ง๋ฌธ ์ฝ์ ๋ฐ ์ฌํ ์ถ์ ๊ธฐ๋ฒ์ ์กฐํฉ์ ํ์ค์ ์ด๊ณ ๊ฐ๋ ฅํ ๋ณต์ ๋ฐฉ์ง ์ฒด๊ณ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
๋ค์ ๊ธ์์๋ ๋๊ตฐ๊ฐ๊ฐ ๋ด ์ฝํ ์ธ ๋ฅผ ๋ณต์ฌํ์ ๋, ๋ณต์ฌํ ์ฌ๋์ IP์ ๋ณต์ฌ ์์ ์ด ์๋์ผ๋ก ๊ธฐ๋ก๋ถ์๋๋ ์์คํ ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ฒ ์ต๋๋ค.

Q1. ๋์งํธ ์ง๋ฌธ(Digital Fingerprinting)์ ๋ชจ๋ ๋ณต์ ๋ฅผ 100% ๋ฐฉ์งํด ์ฃผ๋์?
์๋๋๋ค. ๋์งํธ ์ง๋ฌธ์ ๋ณต์ ๋ฐฉ์ง๋ผ๊ธฐ๋ณด๋ค ๋ณต์ ์ถ์ ์ ๋ ๊ฐ๊น์ด ๊ธฐ์ ์ ๋๋ค. HTML/CSS/JS ๊ธฐ๋ฐ์ ํฐ์คํ ๋ฆฌ ํ๊ฒฝ์์๋ ์๋ฒ ๊ธฐ๋ฐ ์ง๋ฌธ ์ฝ์ ์ด ์ ํ๋์ง๋ง, ๋ณต์ ๊ธ์ ๋จ๋ ๊ณ ์ ํจํด์ ์ด์ฉํ์ฌ ์๋ณธ์ ์ ์ฆํ๋ ๋ฐ ๋งค์ฐ ํจ๊ณผ์ ์ ๋๋ค.
Q2. ์ ๋ก ํญ ๊ณต๋ฐฑ ๋ฌธ์(Zero-Width Space)๋ฅผ ์ฌ์ฉํด๋ SEO์ ์ํฅ์ด ์๋์?
๋ค, ๊ฒ์ ์์ง์ ์ ๋ก ํญ ๋ฌธ์๋ฅผ ์ธ๋ฑ์ฑํ์ง ์๊ธฐ ๋๋ฌธ์ SEO์๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ๋ค๋ง, ๋ณต์ ์๊ฐ ๊ณ ๊ธ ์ ์ ๋๊ตฌ(Cleaner)๋ก ํ ์คํธ๋ฅผ ๊ฐ๊ณตํ๋ฉด ์ง๋ฌธ์ด ์ผ๋ถ ์ ๊ฑฐ๋ ์ ์๋ค๋ ์ ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
Q3. ๋ฐฉ๋ฌธ์๊ฐ ๊ธ์ ๋ณต์ฌํ ๋ IP๋ ์๊ฐ ๊ธฐ๋ก๋ ๊ฐ๋ฅํ๊ฐ์?
JavaScript๋ง์ผ๋ก๋ ์ฌ์ฉ์์ IP๋ฅผ ์ง์ ์์งํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ณต์ฌ ์ด๋ฒคํธ ๋ฐ์ ์ ๋ณต์ฌํ ์ฌ์ฉ์์๊ฒ ๊ณ ์ ํ ํ์์คํฌํ, ์ถ์ฒ URL, ํฌ์คํธID ๋ฑ์ ์ ๋ณด๋ฅผ ์๋์ผ๋ก ํด๋ฆฝ๋ณด๋์ ์ถ๊ฐํ์ฌ ๋ณต์ฌ ์์ ์ ๊ธฐ๋กํ๊ฑฐ๋ ์ถ์ ํ๋ ๊ฒ์ ๊ฐ๋ฅํฉ๋๋ค.
Q4. ์ด๋ฏธ์ง์๋ ๋์งํธ ์ง๋ฌธ์ ๋ฃ์ ์ ์๋์?
๊ฐ๋ฅํฉ๋๋ค. ์คํ ๊ฐ๋ ธ๊ทธ๋ํผ ๊ธฐ๋ฐ ์ํฐ๋งํน์ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ์ง ํ์ผ ๋ด๋ถ์ ํฌ์คํธ ID๋ฅผ ์จ๊ฒจ ๋ฃ์ ์ ์์ต๋๋ค. ํ์ง๋ง ํฐ์คํ ๋ฆฌ์์๋ ์๋ฒ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ์ธ๋ถ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ์๋ฒ(AWS Lambda, Cloudflare Workers ๋ฑ)๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ค๋ ์ ํ์ด ์์ต๋๋ค.
Q5. ํฐ์คํ ๋ฆฌ์์ ๊ฐ์ฅ ํ์ค์ ์ผ๋ก ์ถ์ฒํ๋ ๋ณต์ ๋ฐฉ์ง ๋ฐฉ์์ ๋ฌด์์ธ๊ฐ์?
ํฐ์คํ ๋ฆฌ์์๋ ํด๋ผ์ด์ธํธ ์ธก ์ ๊ทผ์ด ์ต์ ์ด๋ฏ๋ก, ๋ณต์ฌ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ถ์ฒ ์๋ ์ฝ์ (clipboard) + ์ ๋ก ํญ ๊ณต๋ฐฑ ๋ฌธ์ + ์จ๊ฒจ์ง POST-ID ์กฐํฉ์ด ๊ฐ์ฅ ํ์ค์ ์ด๋ฉฐ ๋ณต์ ์ถ์ ๋ฅ๋ ฅ์ด ๋ฐ์ด๋ฉ๋๋ค.
์ฐธ๊ณ ์์: ๋์งํธ ์ง๋ฌธ ํ์ฉ ์ ์๊ถ ๋ณดํธ ๋ฐ ์ถ์
๋์งํธ ์ง๋ฌธ์ ํ์ฉํ์ฌ ์ฝํ ์ธ ์ ์๋ณธ ์ถ์ฒ๋ฅผ ์ถ์ ํ๊ณ ์ ์๊ถ์ ๋ณดํธํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ด๋ จ ์์์ ์ฒจ๋ถํฉ๋๋ค.