하기 사이트에서는 React 에서 사용할 수 있는 패키지 모듈을 소개하는데, 실제 적용하려면 추가 작업이 필요하다.
*https://snyk.io/blog/10-react-security-best-practices/
1) dompurify 를 사용하기 위해서는 import 로 isomorphic-dompurify를 해야하고, npm install isomorphic-dompurify 로 설치가 필요하다.
import purify from "isomorphic-dompurify";
<div dangerouslySetInnerHTML={{__html: purify.sanitize ("<font size=10>dfdf</font><script>console.log();</script><bdo dir='rtl'>direction</bdo><h1 style=\"color: red\">예제</h1></bdo>")}}></div>
스크립트 코드와 일반 HTML의 출력이 되는 결과를 확인하면 script는 출력되지 않는 것을 알 수 있다.
2) validateURL 은 http를 제거하면서 결과를 확인하면 간단한 필터링 함수를 실행할 수 있다.
function validateURL(url) {
const parsed = new URL(url)
return ['https:'].includes(parsed.protocol)
}
<a href={validateURL(url) ? url : ''}>Click here!</a>
3) renderToStaticMarkup 메서드를 사용하기 위해서는 react-dom/server를 import 해야하고 모듈이 없다고 나오면 설치가 필요하다. (npm install ReactDOMServer)
import ReactDOMServer from 'react-dom/server';
text=ReactDOMServer.renderToStaticMarkup(
React.createElement("h1",null,text)
)
댓글 달기