λ¬΄λ¨ μ κ·Ό λ° μμ μΌλ‘λΆν° μ€νμΌμνΈλ₯Ό 보νΈνκΈ° μν CSS λλ ν κΈ°μ μ μ μ¬λ ₯κ³Ό νκ³λ₯Ό μ΄ν΄λ³΄μΈμ. μ€μ©μ μΈ μ λ΅ λ° λ체 보μ μ‘°μΉλ₯Ό μμ보μΈμ.
CSS @obfuscate: μ½λ 보νΈλ₯Ό μν μ€μ© κ°μ΄λ
μΉ κ°λ° μΈκ³μμ μ§μ μ¬μ° 보νΈμ μ½λ λ¬΄κ²°μ± λ³΄μ₯μ λ§€μ° μ€μν©λλ€. JavaScriptκ° λ³΄μ λ Όμμ μ€μ¬μ μ°¨μ§νλ κ²½μ°κ° λ§μ§λ§, CSSλ κ²λ³΄κΈ°μλ 무ν΄ν΄ 보μ΄μ§λ§ 보νΈλ₯Ό λ°μ μ μμ΅λλ€. μ΄ κΈ°μ¬μμλ CSS λλ ν κ°λ μ μμΈν μ΄ν΄λ³΄κ³ , κ·Έ λͺ©μ , νκ³, μ€μ©μ μΈ κ΅¬ν (κ°μ `@obfuscate` μ§μλ¬Έ ν¬ν¨) λ° λ체 보μ μ‘°μΉλ₯Ό μ΄ν΄λ΄ λλ€. μ°λ¦¬λ λ€μν μΉ κ°λ° νκ²½μ κ³ λ €νμ¬ μ΄ μ£Όμ μ λν μ 체μ μΈ κ΄μ μ μ·¨ν κ²μ λλ€.
CSS λλ νλ 무μμ λκΉ?
CSS λλ νλ CSS μ½λλ₯Ό μ¬λμ΄ μ΄ν΄νκΈ° μ΄λ ΅κ² λ³ννλ νλ‘μΈμ€μ΄μ§λ§ λΈλΌμ°μ κ° μ΄λ₯Ό μ¬λ°λ₯΄κ² ν΄μνκ³ λ λλ§ν μ μλλ‘ νλ νλ‘μΈμ€μ λλ€. λͺ©νλ μ€νμΌμνΈμ λ¬΄λ¨ μ‘μΈμ€, μμ λλ 리λ²μ€ μμ§λμ΄λ§μ λ°©μ§νλ κ²μ λλ€. μ΄κ²μ λ곡λΆλ½μ λ°©ν¨κ° μλ λ°©μ§μ± μΌλ‘ μκ°νμμμ€. μνΈνμ λ¬λ¦¬ λλ νλ μ½λλ₯Ό μ½λ κ²μ λΆκ°λ₯νκ² λ§λ€μ§ μμ§λ§ κ·Έλ κ² νκΈ° μν΄ νμν λ Έλ ₯μ μ¦κ°μν΅λλ€.
ν΅μ¬ μμΉμ κΈ°λ₯μ λ³κ²½νμ§ μκ³ μ½λλ₯Ό μ½κΈ° μ΄λ ΅κ² λ§λλ κ²μ λλ€. μ΄λ μΌλ°μ μΌλ‘ λ€μκ³Ό κ°μ κΈ°μ μ μ‘°ν©μ ν΅ν΄ λ¬μ±λ©λλ€.
- μ νκΈ° μ΄λ¦ λ°κΎΈκΈ°: μλ―Έ μλ ν΄λμ€ λ° ID μ΄λ¦μ μλ―Έ μλ λ¬Έμμ΄ λλ 무μμλ‘ μμ±λ λ¬Έμμ΄λ‘ λ°κΏλλ€.
- 곡백 λ° μ£Όμ μ κ±°: κ°λ μ±μ μ€μ΄κΈ° μν΄ λΆνμν λ¬Έμλ₯Ό μ κ±°ν©λλ€.
- λ¬Έμμ΄ μΈμ½λ©: λ¬Έμμ΄(μ: URL, ν μ€νΈ λ΄μ©)μ μΈμ½λ©λ νμμΌλ‘ λ³νν©λλ€.
- μ½λ λ³ν: μλ λ Όλ¦¬λ₯Ό λ°λ₯΄κΈ° μ΄λ ΅κ² CSS μ½λλ₯Ό μ¬κ΅¬μ±ν©λλ€.
(κ°μ) `@obfuscate` μ§μλ¬Έ
CSSμ λ΄μ₯λ `@obfuscate` μ§μλ¬Έμ΄ ν¬ν¨λ λ―Έλλ₯Ό μμν΄ λ³΄μμμ€. μ΄λ νμ¬ CSS μ¬μμλ μ‘΄μ¬νμ§ μμ§λ§, μ΄λ¬ν κΈ°λ₯μ΄ μ΄λ»κ² μλν μ μλμ§ λ³΄μ¬μ£Όλ μ μ©ν μ¬κ³ μ€ν μν μ ν©λλ€. μ μ¬μ μΈ κ΅¬λ¬Έκ³Ό κ·Έ μλ―Έλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
ꡬ문 μμ
μ μ¬μ μΈ κ΅¬νμ λ€μκ³Ό κ°μ΅λλ€.
@obfuscate {
.my-important-class {
color: #007bff; /* Example blue color */
font-size: 16px;
}
#unique-element {
background-color: #f0f0f0; /* Light gray background */
width: 100%;
}
}
μ΄ μλ리μ€μμ `@obfuscate` μ§μλ¬Έμ CSS νλ‘μΈμ(λλ κ°μ λΈλΌμ°μ κΈ°λ₯)μ λΈλ‘ λ΄μ μ½λμ λλ ν κΈ°μ μ μ μ©νλΌλ μ νΈλ₯Ό 보λ λλ€. μ€μ λλ ν μκ³ λ¦¬μ¦μ ꡬνλ³λ‘ λ€λ₯΄μ§λ§ μμ μΈκΈν κΈ°μ (μ΄λ¦ λ°κΎΈκΈ°, 곡백 μ κ±° λ±)μ ν¬ν¨ν μ μμ΅λλ€.
μ μ¬μ μΈ μ΄μ
- λλ ν κ°μν: κ°λ°μλ μΈλΆ λꡬμ μμ‘΄νκ±°λ μ체 λλ ν νλ‘μΈμ€λ₯Ό ꡬμΆν νμκ° μμ΅λλ€.
- νμ€νλ μ κ·Ό λ°©μ: νμ€νλ μ§μλ¬Έμ μλ‘ λ€λ₯Έ νκ²½μμ μΌκ΄λ λλ νλ₯Ό 보μ₯ν©λλ€.
- μ μ§ κ΄λ¦¬μ± ν₯μ: λλ νλ μ½λλ₯Ό λΈλ‘ λ΄μ μΊ‘μνν¨μΌλ‘μ¨ κ°λ°μλ μ€νμΌμνΈλ₯Ό λ μ½κ² κ΄λ¦¬νκ³ μ λ°μ΄νΈν μ μμ΅λλ€.
κ³Όμ λ° κ³ λ € μ¬ν
- μ±λ₯ μ€λ²ν€λ: λλ ν νλ‘μΈμ€ μμ²΄κ° νΉν λκ·λͺ¨ μ€νμΌμνΈμ κ²½μ° μ±λ₯ μ€λ²ν€λλ₯Ό μ λ°ν μ μμ΅λλ€.
- λλ²κΉ μ΄λ €μ: λλ νλ μ½λλ μλ ꡬ쑰μ μ΄λ¦μ΄ κ°λ €μ§λ―λ‘ λλ²κΉ νκΈ°κ° λ μ΄λ €μΈ μ μμ΅λλ€.
- ꡬν 볡μ‘μ±: κ°λ ₯νκ³ ν¨κ³Όμ μΈ `@obfuscate` μ§μλ¬Έμ ꡬννλ κ²μ 볡μ‘ν μμ μ λλ€.
- μ νλ ν¨κ³Ό: λͺ¨λ λλ ν κΈ°μ κ³Ό λ§μ°¬κ°μ§λ‘ μ΄λ μλ²½ν ν΄κ²°μ± μ΄ μλλ©°, μμ§κ° μλ 곡격μμ μν΄ μ°νλ μ μμ΅λλ€.
`@obfuscate` μ§μλ¬Έμ κ°μμ μΈ νΉμ±μλ λΆκ΅¬νκ³ λ΄μ₯λ CSS 보μ κΈ°λ₯μ μ μ¬λ ₯μ κ°μ‘°ν©λλ€. κ·Έλ¬λ μ΄λ¬ν κΈ°λ₯μ΄ νμ€νλ λκΉμ§ κ°λ°μλ κΈ°μ‘΄ λꡬμ κΈ°μ μ μμ‘΄ν΄μΌ ν©λλ€.
νμ¬ CSS λλ ν κΈ°μ
λ€μ΄ν°λΈ `@obfuscate` μ§μλ¬Έμ μ‘΄μ¬νμ§ μμ§λ§, CSS μ½λλ₯Ό λλ ννλ λ° μ¬μ©ν μ μλ λͺ κ°μ§ κΈ°μ κ³Ό λκ΅¬κ° μμ΅λλ€. μ΄λ¬ν κΈ°μ μ μΌλ°μ μΌλ‘ μλ λλ νμ λꡬλ₯Ό μ¬μ©ν μλ λλ νμ λ κ°μ§ λ²μ£Όλ‘ λλ©λλ€.
μλ λλ ν
μλ λλ νμλ CSS μ½λλ₯Ό μ½κΈ° μ΄λ ΅κ² λ§λ€κΈ° μν΄ μ§μ μμ νλ μμ μ΄ ν¬ν¨λ©λλ€. μ΄ μ κ·Ό λ°©μμ μΌλ°μ μΌλ‘ μλ λλ νλ³΄λ€ ν¨κ³Όκ° λ¨μ΄μ§μ§λ§ μκ·λͺ¨ μ€νμΌμνΈ λλ λ€λ₯Έ κΈ°μ μ 보μνλ λ° μ μ©ν μ μμ΅λλ€.
- μ νκΈ° μ΄λ¦ λ°κΎΈκΈ°: μλ―Έ μλ ν΄λμ€ λ° ID μ΄λ¦μ μλ―Έ μκ±°λ λ¨μΆλ λ²μ μΌλ‘ λ°κΏλλ€. μλ₯Ό λ€μ΄, `.product-name`μ `.pn`μ΄ λ μ μμΌλ©°, `.style-one`μ `.s1`μ΄ λ μ μμ΅λλ€.
- μ½λ μ΅μν: μ½λλ₯Ό λ μκ³ μ½κΈ° μ΄λ ΅κ² λ§λ€κΈ° μν΄ λͺ¨λ λΆνμν 곡백, μ£Όμ λ° μμμ μ κ±°ν©λλ€. CSSNano λλ μ¨λΌμΈ CSS μ΅μν νλ‘κ·Έλ¨κ³Ό κ°μ λꡬλ μ΄ νλ‘μΈμ€λ₯Ό μλνν μ μμ΅λλ€.
- μΆμ½ μμ± μ¬μ©: μ¬λ¬ μ μΈμ λ¨μΌ λΌμΈμΌλ‘ κ²°ν©νκΈ° μν΄ CSS μΆμ½ μμ±μ μ¬μ©ν©λλ€. μλ₯Ό λ€μ΄, `margin-top: 10px; margin-right: 20px; margin-bottom: 10px; margin-left: 20px;`λ₯Ό μμ±νλ λμ `margin: 10px 20px;`λ₯Ό μ¬μ©νμμμ€.
λꡬλ₯Ό μ¬μ©ν μλ λλ ν
CSS μ½λλ₯Ό μλμΌλ‘ λλ νν μ μλ λͺ κ°μ§ λꡬλ₯Ό μ¬μ©ν μ μμ΅λλ€. μ΄λ¬ν λꡬλ μΌλ°μ μΌλ‘ μλ λλ νλ³΄λ€ λ μ κ΅ν κΈ°μ μ μ¬μ©νλ©° μΌλ°μ μΌλ‘ λ ν¨κ³Όμ μ λλ€.
- λλ ν μ΅μ μ΄ μλ CSS μ΅μν νλ‘κ·Έλ¨: CSSOμ κ°μ μΌλΆ CSS μ΅μν νλ‘κ·Έλ¨μ μ΅μν νλ‘μΈμ€ μ€μ ν΄λμ€ μ΄λ¦κ³Ό IDλ₯Ό λλ ννλ μ΅μ μ μ 곡ν©λλ€.
- JavaScript κΈ°λ° λλ ν νλ‘κ·Έλ¨: μ£Όλ‘ JavaScriptμ©μΌλ‘ μ€κ³λμμ§λ§ μΌλΆ JavaScript λλ ν νλ‘κ·Έλ¨μ μ νκΈ° λ° μμ± κ°μ μΈμ½λ©νμ¬ CSS μ½λλ₯Ό λλ ννλ λ°μλ μ¬μ©ν μ μμ΅λλ€.
- μ¬μ©μ μ§μ μ€ν¬λ¦½νΈ: κ°λ°μλ νΉμ μꡬ μ¬νμ λ°λΌ λλ ν νλ‘μΈμ€λ₯Ό μλννκΈ° μν΄ Python λλ Node.jsμ κ°μ μΈμ΄λ₯Ό μ¬μ©νμ¬ μ¬μ©μ μ§μ μ€ν¬λ¦½νΈλ₯Ό λ§λ€ μ μμ΅λλ€.
μ: ν΄λμ€ μ΄λ¦ μ¬λ§€νκ³Ό ν¨κ» CSSNano μ¬μ©
CSSNanoλ ν΄λμ€ μ΄λ¦μ μ¬λ§€ννλλ‘ κ΅¬μ±ν μ μλ μΈκΈ° μλ CSS μ΅μν νλ‘κ·Έλ¨μ λλ€. Node.jsμμ μ¬μ©νλ λ°©λ²μ μλ λ€μκ³Ό κ°μ΅λλ€.
const cssnano = require('cssnano');
const postcss = require('postcss');
const fs = require('fs');
const css = fs.readFileSync('input.css', 'utf8');
postcss([cssnano({ preset: ['default', { classname: { mangle: true } }] })])
.process(css, { from: 'input.css', to: 'output.css' })
.then(result => {
fs.writeFileSync('output.css', result.css);
});
μ΄ μ½λλ `input.css`μμ CSSλ₯Ό μ½κ³ , ν΄λμ€ μ΄λ¦ λ§ΉκΈλ§μ νμ±ννμ¬ CSSNanoλ₯Ό ν΅ν΄ μ€ννκ³ , λλ νλ CSSλ₯Ό `output.css`μ μλλ€. `mangle: true` μ΅μ μ CSSNanoμ ν΄λμ€ μ΄λ¦μ λ μ§§κ³ μλ―Έ μλ μ΄λ¦μΌλ‘ λ°κΎΈλΌκ³ μ§μν©λλ€.
CSS λλ νμ μ ν μ¬ν
CSS λλ νλ λ§λ³ν΅μΉμ½μ΄ μλλΌλ κ²μ μ΄ν΄νλ κ²μ΄ μ€μν©λλ€. κ°λ°μκ° μμμΌ ν λͺ κ°μ§ μ ν μ¬νμ΄ μμ΅λλ€.
- 리λ²μ€ μμ§λμ΄λ§μ μ¬μ ν κ°λ₯ν©λλ€: μλ ¨λ κ°λ°μλ λΈλΌμ°μ κ°λ°μ λꡬλ₯Ό μ¬μ©νμ¬ λλ νλ CSS μ½λλ₯Ό 리λ²μ€ μμ§λμ΄λ§ν μ μμ΅λλ€.
- 볡μ‘μ± μ¦κ°: λλ νλ κ°λ° νλ‘μΈμ€μ 볡μ‘μ±μ λνκ³ λλ²κΉ μ λ μ΄λ ΅κ² λ§λ€ μ μμ΅λλ€.
- μ±λ₯ μν₯: λλ ν νλ‘μΈμ€ μμ²΄κ° μ½κ°μ μ±λ₯ μ€λ²ν€λλ₯Ό μ λ°ν μ μμ§λ§, μ΄λ μΌλ°μ μΌλ‘ 무μν μ μμ΅λλ€.
- μ μ ν 보μ κ΄νμ λ체νμ§ μμ΅λλ€: λλ νλ μ λ ₯ μ ν¨μ± κ²μ¬ λ° μλ² μΈ‘ 보μ μ‘°μΉμ κ°μ μ μ ν 보μ κ΄νμ λ체νλ λ° μ¬μ©ν΄μλ μ λ©λλ€.
λ€μ μλ₯Ό κ³ λ €νμμμ€. `.product-image`λ₯Ό `.aBcDeFg`λ‘ μ΄λ¦μ λ°κΏλ μμ§κ° μλ 곡격μλ CSSλ₯Ό κ²μ¬νκ³ `.aBcDeFg`κ° μ ν μ΄λ―Έμ§λ₯Ό μ€νμΌλ§νλ€λ κ²μ μλ³ν μ μμ΅λλ€. λλ νλ μ¬μν λΆνΈν¨λ§ μΆκ°ν©λλ€.
λ체 λ° λ³΄μ 보μ μ‘°μΉ
CSS λλ νμ μ ν μ¬νμ κ³ λ €ν λ λ체 λ° λ³΄μ 보μ μ‘°μΉλ₯Ό κ³ λ €νλ κ²μ΄ νμμ μ λλ€. μ΄λ¬ν μ‘°μΉλ 리μμ€μ λν λ¬΄λ¨ μ‘μΈμ€λ₯Ό λ°©μ§νκ³ μ μμ μΈ κ³΅κ²©μΌλ‘λΆν° μμ© νλ‘κ·Έλ¨μ 보νΈνλ λ° μ€μ μ λ‘λλ€.
- μ½ν μΈ λ³΄μ μ μ± (CSP): CSPλ λΈλΌμ°μ κ° μ€νμΌμνΈ, μ€ν¬λ¦½νΈ λ° μ΄λ―Έμ§μ κ°μ 리μμ€λ₯Ό λ‘λν μ μλ μμ€λ₯Ό μ μ΄ν μ μλ κ°λ ₯ν 보μ λ©μ»€λμ¦μ λλ€. μ격ν CSP μ μ± μ μ μνμ¬ κ³΅κ²©μκ° μμ© νλ‘κ·Έλ¨μ μ μ± μ½λλ₯Ό μ½μ νλ κ²μ λ°©μ§ν μ μμ΅λλ€.
- νμ 리μμ€ λ¬΄κ²°μ± (SRI): SRIλ₯Ό μ¬μ©νλ©΄ νμ¬ CDN (μ½ν μΈ μ μ‘ λ€νΈμν¬)μμ λ‘λνλ νμΌμ΄ νΌμλμ§ μμλμ§ νμΈν μ μμ΅λλ€. `` νκ·Έμ SRI ν΄μλ₯Ό ν¬ν¨μν€λ©΄ λΈλΌμ°μ κ° λ€μ΄λ‘λλ νμΌμ΄ μμ ν΄μμ μΌμΉνλμ§ νμΈν©λλ€.
- μλ² μΈ‘ 보μ: κ΅μ°¨ μ¬μ΄νΈ μ€ν¬λ¦½ν (XSS) λ° κ΅μ°¨ μ¬μ΄νΈ μμ² μμ‘° (CSRF)μ κ°μ 곡격μΌλ‘λΆν° μμ© νλ‘κ·Έλ¨μ 보νΈνκΈ° μν΄ κ°λ ₯ν μλ² μΈ‘ 보μ μ‘°μΉλ₯Ό ꡬνν©λλ€.
- μ κΈ° 보μ κ°μ¬: μμ© νλ‘κ·Έλ¨μ μ μ¬μ μΈ μ·¨μ½μ μ μλ³νκ³ ν΄κ²°νκΈ° μν΄ μ κΈ°μ μΈ λ³΄μ κ°μ¬λ₯Ό μνν©λλ€.
- μ‘μΈμ€ μ μ΄: μ¬μ©μ μν λ° κΆνμ λ°λΌ μ€μν 리μμ€μ λν μ‘μΈμ€λ₯Ό μ ννλ μ‘μΈμ€ μ μ΄ λ©μ»€λμ¦μ ꡬνν©λλ€.
μ½ν μΈ λ³΄μ μ μ± (CSP) μμ
μ€νμΌμνΈλ₯Ό λ‘λν μ μλ μμ€λ₯Ό μ ννλ CSP ν€λμ μλ λ€μκ³Ό κ°μ΅λλ€.
Content-Security-Policy: default-src 'self'; style-src 'self' https://fonts.googleapis.com;
μ΄ μ μ± μ μ¬μ©νλ©΄ μ€νμΌμνΈλ₯Ό λμΌν μΆμ² ('self') λ° `https://fonts.googleapis.com`μμ λ‘λν μ μμ΅λλ€. λ€λ₯Έ μ€νμΌμνΈ μμ€λ λΈλΌμ°μ μμ μ°¨λ¨λ©λλ€.
CSS 보μμ λν κΈλ‘λ² κ³ λ € μ¬ν
CSS 보μ μ‘°μΉλ₯Ό ꡬνν λλ μΉμ κΈλ‘λ² νΉμ±μ κ³ λ €νλ κ²μ΄ μ€μν©λλ€. μλ‘ λ€λ₯Έ μ§μκ³Ό κ΅κ°λ§λ€ λ€λ₯Έ κ·μ λ° λ³΄μ νμ€μ΄ μμ μ μμ΅λλ€. λ€μμ λͺ κ°μ§ κΈλ‘λ² κ³ λ € μ¬νμ λλ€.
- λ°μ΄ν° κ°μΈ μ 보 보νΈλ²: μ λ½ μ°ν©μ GDPR (μΌλ° λ°μ΄ν° λ³΄νΈ κ·μ ) λ° λ―Έκ΅μ CCPA (μΊλ¦¬ν¬λμ μλΉμ κ°μΈ μ 보 보νΈλ²)μ κ°μ λ°μ΄ν° κ°μΈ μ 보 보νΈλ²μ μΈμ§νμμμ€. μ΄λ¬ν λ²λ₯ μ CSS μ½λμμ μ¬μ©μ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ°©μμ μν₯μ λ―ΈμΉ μ μμ΅λλ€.
- μ κ·Όμ±: μμΉμ κ΄κ³μμ΄ μ₯μ κ° μλ μ¬μ©μκ° CSS μ½λμ μ‘μΈμ€ν μ μλμ§ νμΈνμμμ€. WCAG (μΉ μ½ν μΈ μ κ·Όμ± μ§μΉ¨)μ κ°μ μ κ·Όμ± μ§μΉ¨μ λ°λ₯΄μμμ€.
- λΈλΌμ°μ κ° νΈνμ±: μ μΈκ³ μ¬μ©μλ₯Ό μν΄ CSS μ½λκ° μ¬λ°λ₯΄κ² λ λλ§λλμ§ νμΈνκΈ° μν΄ μλ‘ λ€λ₯Έ λΈλΌμ°μ λ° νλ«νΌμμ CSS μ½λλ₯Ό ν μ€νΈνμμμ€.
- κ΅μ ν: μμ© νλ‘κ·Έλ¨μ΄ μ¬λ¬ μΈμ΄λ₯Ό μ§μνλ κ²½μ° CSS μ½λκ° λ€λ₯Έ λ¬Έμ μ§ν© λ° ν μ€νΈ λ°©ν₯μ μ¬λ°λ₯΄κ² μ²λ¦¬νλμ§ νμΈνμμμ€.
- CDN λ°°ν¬: CDN (μ½ν μΈ μ μ‘ λ€νΈμν¬)μ μ¬μ©νμ¬ CSS νμΌμ μ μΈκ³ μλ²μ λ°°ν¬ν©λλ€. μ΄λ κ² νλ©΄ μλ‘ λ€λ₯Έ μ§μμ μ¬μ©μμ μ±λ₯μ΄ ν₯μλκ³ λκΈ° μκ°μ΄ μ€μ΄λλλ€. μΈκΈ° μλ CDN μ΅μ μλ Cloudflare, Amazon CloudFront λ° Akamaiκ° μμ΅λλ€.
κ²°λ‘
CSS λλ νλ μ€νμΌμνΈμ λ¬΄λ¨ μ‘μΈμ€ λ° μμ μΌλ‘λΆν° μ μ ν μμ€μ 보νΈλ₯Ό μ 곡ν μ μμ΅λλ€. κ·Έλ¬λ μ΄λ μλ²½ν ν΄κ²°μ± μ΄ μλλ©°, λ€λ₯Έ 보μ μ‘°μΉμ ν¨κ» μ¬μ©ν΄μΌ ν©λλ€. λλ νμ νκ³λ₯Ό μ΄ν΄νκ³ CSP, SRI λ° μλ² μΈ‘ 보μκ³Ό κ°μ κ°λ ₯ν 보μ κ΄νμ ꡬννλ κ²μ μ€λλ μ κΈλ‘λ² λμ§νΈ νκ²½μμ μΉ μμ© νλ‘κ·Έλ¨μ 보νΈνλ λ° λ§€μ° μ€μν©λλ€.
λ€μ΄ν°λΈ `@obfuscate` μ§μλ¬Έμ λ―Έλμ κ°λ μΌλ‘ λ¨μ μμ§λ§, κΈ°λ³Έμ μΈ μμΉμ μ 체μ μΈ μΉ λ³΄μ μ λ΅μ μΌνμΌλ‘ CSS 보μμ κ³ λ €νλ κ²μ μ€μμ±μ κ°μ‘°ν©λλ€. μ΅μ 보μ μν λ° λͺ¨λ² μ¬λ‘μ λν μ 보λ₯Ό μ μ§ν¨μΌλ‘μ¨ κ°λ°μλ μ μΈκ³ μ¬μ©μλ₯Ό μν΄ λ μμ νκ³ νλ ₯μ μΈ μΉ μμ© νλ‘κ·Έλ¨μ ꡬμΆν μ μμ΅λλ€.