Tip

React String형의 Html 렌더링 하기

Kir93 2021. 7. 28. 17:02
728x90
반응형

웹 프로젝트를 하다보면 서버 단에서 html 태그를 문자로 받아 띄어줘야 되는 경우가 있다.

 

이 경우 주로 사용하는 방법은 dangerouslySetInnerHTML을 이용하는 방법이 있다.

const Test = () => {
  const tagCodes = "<strong>Test Code</strong>"
  
  return <div dangerouslySetInnerHTML={{__html:tagCodes}} />
}

이 방법은 충분히 간편하지만 사용자가 등록할 수 있는 장소에서는 cross-site scripting(XSS) 공격에 매우 취약하기에 라이브러리를 사용해 조금이나마 안전한 방법으로 사용할 것을 권한다.

npm install sanitize-html
import sanitizeHtml from 'sanitize-html';

const Test = () => {
  const tagCodes = "<strong>Test Code</strong>"
  const cleanCode = sanitizeHtml(tagCodes);
  
  return <div dangerouslySetInnerHTML={{__html:cleanCode}} />
}

아래와 같이 사용하면 되고 sanitize-html의 두번째 인자로는 옵션들을 적용할 수 있으니 허용할 tag들이나 허용하지 않을 tag들을 지정한다면 조금 더 안전하게 사용할 수 있다.

반응형