Security - composite/nw.js GitHub Wiki

nw.js λŠ” node.js 지원 및 μ‹ λ’°λœ DOM 및 μ½˜ν…νŠΈ 지원을 ν–₯μƒμ‹œν‚¨ ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€. λ§Œμ•½ μ‹ λ’°ν•  수 μ—†λŠ” μ½”λ“œλ‚˜ λ‚΄μš©μ΄ μžˆμ„ 경우 λ°˜λ“œμ‹œ frame μ΄λ‚˜ iframe 내에 μ²¨λΆ€ν•˜μ‹­μ‹œμ˜€! μ΄λ ‡κ²Œ ν•΄μ„œ λΈŒλΌμš°μ €μ™€ λ™μΌν•œ 역할을 ν•˜κ±°λ‚˜ node-frame 및 normal frame μ΄λ ‡κ²Œ 뢄리할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ•± κ°œλ°œμžλŠ” λ°˜λ“œμ‹œ 격리된 ν”„λ ˆμž„ 넀에 μ½˜ν…νŠΈκ°€ λ“€μ–΄κ°€λŠ” μ§€ 확인, 또 ν™•μΈν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

node ν”„λ ˆμž„κ³Ό 일반 ν”„λ ˆμž„μ„ κ΅¬λΆ„ν•˜λŠ” 방법?

  1. iframe νƒœκ·Έμ— nwdisable 속성을 μΆ”κ°€ν•˜μ—¬ 일반 ν”„λ ˆμž„ νŽ˜μ΄μ§€λ₯Ό κ΅¬λΆ„ν•©λ‹ˆλ‹€ (μ°Έκ³ : nwfaketop 속성도 같이 μ²¨κ°€ν•˜λ©΄ λ„μš± μ’‹μŠ΅λ‹ˆλ‹€. 이유 λ§ν¬λŠ” https://github.com/rogerwang/node-webkit/issues/534) (μ£Ό: readonly 같은 λΆ€μšΈ μ†μ„±μž…λ‹ˆλ‹€.)
  2. 둜컬 파일, app protocol μ£Όμ†Œκ°€ λ“€μ–΄κ°„ μ½˜ν…νŠΈ(λ˜λŠ” λ§€λ‹ˆνŽ˜μŠ€νŠΈ ν˜•μ‹μ˜ node-remote ν•„λ“œμ— URL이 μΆ”κ°€λœ 경우)의 경우 κΈ°λ³Έ node ν”„λ ˆμž„μœΌλ‘œ λ™μž‘ν•©λ‹ˆλ‹€. (nodejs ν•„λ“œ 속성이 false κ°€ λ˜μ–΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€.)
  3. 보톡 νŒμ—…μ„ μ—¬λŠ” window.open λ©”μ†Œλ“œλŠ” 일반 ν”„λ ˆμž„μœΌλ‘œ λŒμ•„κ°‘λ‹ˆλ‹€. (λ§€λ‹ˆνŽ˜μŠ€νŠΈ ν˜•μ‹μ˜ new-instance ν•„λ“œλŠ” true, nodejs ν•„λ“œλŠ” false 인 μƒˆ μ°½κ³Ό 같은 νš¨κ³Όμž…λ‹ˆλ‹€.)

node ν”„λ ˆμž„μ—μ„œ ν•  수 μžˆλŠ” 것듀?

  1. λ‹Ήμ—°νžˆ node.js APIκ°€ μ§€μ›λ©λ‹ˆλ‹€. require, global, process, Buffer, 그리고 root 객체가 μ§€μ›λ©λ‹ˆλ‹€.
  2. μ–΄λŠ ν”„λ ˆμž„μ΄λ˜ 상관 없이 접근이 κ°€λŠ₯ν•©λ‹ˆλ‹€. μ–΄λŠ 도메인 상관없이 DOM에 μ ‘κ·Όν•˜μ—¬ μ œμ–΄κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.
  3. μžμ‹ ν”„λ ˆμž„μ— X-Frame-Options 헀더가 λ¬΄μ‹œλ©λ‹ˆλ‹€.
  4. λ‚˜λ¨Έμ§€λŠ” DOMκ³Ό 달라진 점에 μ†Œκ°œλ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

nwdisable 속성은 0.5.0 rc2 λΆ€ν„° μΆ”κ°€λ˜μ—ˆμœΌλ©°, nwfaketop 속성은 0.5.1 에 μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.