눈뜬감자의 웹개발

[블레이드] 데이터 출력시 HTML 태그 나올 때 해결법 본문

LARAVEL

[블레이드] 데이터 출력시 HTML 태그 나올 때 해결법

litzoo 2024. 9. 21. 10:00

선결론!!

{{ $val }} 대신 
{!! $val !!} 이걸 쓰면 됨

 

서머노트를 이용해서 글을 저장하면 DB에 <p>눈뜬감자의 웹개발</p> 이렇게 저장된다

이 상태에서 데이터를 출력하면 html태그가 그대로 웹에 노출되곤 하는데

열심히 구글링 해서 알게 된 결과... {!! $val !!} 로 하면 된다고 함

 

 

{{ $val }}는 Blade에서 데이터를 HTML로 출력할 때 자동으로 이스케이프 처리되어

<p>HI</p>와 같은 태그가 실제로 출력되지 않고, 그대로 문자열로 나타난다ㅠㅠ

 

이스케이프(ESCAPE) 처리란?
문자열에 태그가 있어도 단순한 텍스트로 처리!

 

 

만약 HTML 태그를 포함한 데이터를 실제 HTML로 렌더링하고 싶다면 {!! $val !!}를 사용하면 된다

주의할 점은, 이 방식은 XSS(Cross-Site Scripting) 공격에 취약할 수 있으므로,

신뢰할 수 없는 데이터에 대해 사용할 때는 위험을 감수해야 한다 ^_^