회원 페이지 시스템을 업데이트했습니다. 요구 사항 중 하나는 특정 필드에 굵게, 밑줄, 기울임 꼴, 글꼴 색 및 링크를 허용하는 것이지만 은 글꼴 크기 또는 스타일이 아닌입니다.이 모든 것은 WYSIWYG 편집기로 수행됩니다. 이것은 원래 textarea와 최소한의 HTML 필터링을 사용하여 수행되었습니다. 즉, 을 사용하여 <script>
을 제거하십시오. 미쳤고 확실히 안전하지 않습니다.사용자가 BBCode 또는 HTML을 WYSIWYG와 함께 게시 할 수있게 하시겠습니까?
TinyMCE를 사용하고 TinyMCE 내에서 특정 태그를 허용하지 않는 유일한 수정 사항은 TinyMCE에 대한 유효성 검사기로 TinyMCE에 의존 할 수없고 XSS에 대한 HTML 입력을 보안 할 수 없다는 것입니다. 지난 1 시간 동안 특정 사례를 읽은 적이 있는데 현재 프로필을 엉망으로 만들지 않고 특정 HTML 태그/특성을 허용하고 글꼴 크기와 같은 다른 사용자 지정을 허용하지 않는 것이 거의 불가능한 것처럼 보입니다. 그리고 인라인 스타일의 물건. 예를 들어 span 태그로 글꼴 색상을 허용해야하지만 style 속성을 허용하면 CSS가 허용됩니다.
이제는 출력에 htmlspecialchars()
을 안전하게 적용하고 [b]에 대한 BBCode 파서로 생성되는 HTML을 완전히 제어 할 수 있으므로 WYSIWYG 편집기에서 BBCode를 사용하는 아이디어로 얼룩지게했습니다. , [u], [i] 및 [color] 태그는 줄 바꿈을 위해 nl2br()
입니다.
유일한 문제는 현재 HTML 설정을 BBCode로 변환하는 코드를 작성해야한다는 것입니다.
필자의 주요 질문은 BBCode가 XSS 공격으로부터 보호하기에 앞서 설명한 단계입니까? 아니면 내가 사용할 수있는 좀 더 우아하고 분명한 HTML 보안 방법이 있습니까?
이것은 내 관심사와 관련이 있습니다. 어떻게해야할까요? – Dunhamzzz