Laavel EC-CUBE의 취약성에서 줄 바꿈을 줄 바꿈 표시로 바꾸는 방법을 배우다
2679 단어 Laravel사용자 정의 디렉토리tech
개막사
EC-CUBE에서는 위험도가'높은'XSS의 취약성이 발견돼 이미 피해를 입힌 것으로 보인다.
수정 방법으로 판단하면 화면을 관리하는 템플릿에서 HTML이 유효할 것 같다.
수정 전
{{ form.tpl_data.vars.data|trans|raw|nl2br }}
수정 후
{{ form.tpl_data.vars.data|trans|nl2br }}
개발자로서 실수로 raw를 넣고 그랬다는 느낌인가요?
이게 라벨로 쓴 거라면.
{!! nl2br(e($content)) !!}
이런 문법은 자세히 생각해 보면 이런 문법이 부주의로'e'를 잘못 쓰면 EC-CUBE처럼 약해질 수 있다.그럼 어떡하지?
대답은 @ucan-lab에서 했습니다.
이걸로 하면 그런 실수도 없어져.
해설은 생략됐지만 Html String으로 되돌아갔기 때문에 {{}의 기법에서도 의도대로 움직인다.그럼 만세.
하지만 이렇게 끝나면 기사의 독창성은 사라지고
@ucan-lab는 가장 좋은 방법이지만 다른 선택을 시도해 보세요.
Blade 맞춤형 카탈로그
따라서 이 방법은 Blade를 사용하여 디렉토리를 사용자 정의하는 방법입니다.
AppServiceProvider의 boot() 내에서 다음 느낌으로 쓰십시오.
public function boot()
{
\Blade::directive('safeBr', function ($expression) {
return "<?php echo nl2br(e($expression)) ?>";
});
}
에서 템플릿 측면에서 다음과 같은 느낌으로 호출합니다.@safeBr($content)
이것은 단지 하나의 선택일 뿐이다.그나저나 맞춤형 카탈로그는 캐나다 러브 콘솔 닷 로그의 블로그에서 말한 것처럼 현금 문제가 있으니 주의해 주십시오.
Reference
이 문제에 관하여(Laavel EC-CUBE의 취약성에서 줄 바꿈을 줄 바꿈 표시로 바꾸는 방법을 배우다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nshiro/articles/67f4daf6363a26텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)