Laavel EC-CUBE의 취약성에서 줄 바꿈을 줄 바꿈 표시로 바꾸는 방법을 배우다

개막사


EC-CUBE에서는 위험도가'높은'XSS의 취약성이 발견돼 이미 피해를 입힌 것으로 보인다.
수정 방법으로 판단하면 화면을 관리하는 템플릿에서 HTML이 유효할 것 같다.
https://www.ec-cube.net/info/weakness/20210507/#diff
수정 전
{{ form.tpl_data.vars.data|trans|raw|nl2br }}
수정 후
{{ form.tpl_data.vars.data|trans|nl2br }}
개발자로서 실수로 raw를 넣고 그랬다는 느낌인가요?
이게 라벨로 쓴 거라면.
{!! nl2br(e($content)) !!}
이런 문법은 자세히 생각해 보면 이런 문법이 부주의로'e'를 잘못 쓰면 EC-CUBE처럼 약해질 수 있다.

그럼 어떡하지?


대답은 @ucan-lab에서 했습니다.
https://qiita.com/ucan-lab/items/4e17bdef22d7cd8a3429
이걸로 하면 그런 실수도 없어져.
해설은 생략됐지만 Html String으로 되돌아갔기 때문에 {{}의 기법에서도 의도대로 움직인다.그럼 만세.
하지만 이렇게 끝나면 기사의 독창성은 사라지고
@ucan-lab는 가장 좋은 방법이지만 다른 선택을 시도해 보세요.

Blade 맞춤형 카탈로그


따라서 이 방법은 Blade를 사용하여 디렉토리를 사용자 정의하는 방법입니다.
AppServiceProvider의 boot() 내에서 다음 느낌으로 쓰십시오.
    public function boot()
    {
        \Blade::directive('safeBr', function ($expression) {
            return "<?php echo nl2br(e($expression)) ?>";
        });
    }
에서 템플릿 측면에서 다음과 같은 느낌으로 호출합니다.
@safeBr($content)
이것은 단지 하나의 선택일 뿐이다.
그나저나 맞춤형 카탈로그는 캐나다 러브 콘솔 닷 로그의 블로그에서 말한 것처럼 현금 문제가 있으니 주의해 주십시오.
https://blog.capilano-fw.com/?p=2804

좋은 웹페이지 즐겨찾기