2011-09-01 6 views
7

PHP에서 주석 분석 기능을 작성하고 있습니다.BBCode를 사용해야하지만 HTML 형식이 아닌 주석 형식을 사용해야하는 이유는 무엇입니까?

BBCode는 실제 마크 업 언어가 아니기 때문에 필자는 글쓰기 스타일을 결코 좋아하지 않았습니다.
그래서 방문자가 기본 HTML 코드를 주석 형식으로 사용할 수있게되었습니다.
게시 할 때 PHP는 허용되지 않거나 유효하지 않은 태그/속성을 확인하고이를 대체하거나 제거합니다.

나는 똑같은 일을하고 BBCode와 똑같이 출력한다고 믿는다.

이것이 사실이라면 왜 BBCode가 있습니까? BBcode는 HTML보다 이점이 있습니까? 흑백 당신이 당신의 HTML 필터가 충분히 안전하다고 확신하는 경우

대답

갱신

, 당신은 내가 확신 쓰기 아니에요,하지만

도 괜찮을 것 필터는 직접하지만 PHP 상위 HTML DOM 파서, HTML 정수기, htmLawed 등의 최상위 필터가 있습니다.

BBCode는 UBB에서 개발되었으며 phpBB와 같이 널리 사용되고 있습니다.

UBB/phpBB의 개발자가 완벽한 HTML 필터 작성 기술에 확신이 없습니까?

또한 StackOverflow가 사용하는 Markdown처럼 ... HTML + Parser가 작업을 수행하는 경우 어쨌든 왜 다른 "언어"를 만들까요? (몇 비트 저장 제외 ...)

+2

Markdown은 새로운 마크 업입니다. – BoltClock

+1

HTML 마크 업이 아주 쉽게 악용되고 체크가 해결 방법이라고 생각합니다. 해커들은 보안 구멍을 발견 할 때 매우 독창적이 될 수 있습니다;) – knittl

+0

@knittl 그래서 이것은 나/PHP VS 해커에 관한 것입니다. 글쎄, 어쩌면 나는 "IF ... 내 파싱 시스템이 훌륭하게/강력하게 작성되었습니다."라고 덧붙였습니다. html로 허용 된 주석 형식에 대한 해킹 예제를보고 싶습니다. – Jon

답변

2

BBCode는 HTML 필터에 버그가있을 수 있으므로 주석 처리자가 주석 처리하지 않을 코드에 주석을 달 수있는 문제를 해결합니다. HTML 필터가 안전하다는 확신이 들면 괜찮을 것입니다.

또 다른 문제는 HTML 메모가 레이아웃을 손상시킬 수 있다는 것입니다. 주석 기자가 단일 마감 인 </div> 또는 그와 비슷한 것을 넣을 때.

+4

아니요. BBCode 해석기에는 XSS도 허용하는 버그가있을 수 있습니다. – Quentin

4

원치 않는 코드 삽입 방지가 가장 큰 이점입니다. 그래서 BBCode 또는 Markdown과 같은 것을 사용합니다.

최소한 블랙리스트가 아닌 허용 된 HTML 태그의 화이트리스트를 사용해야합니다.

+0

+1 허용 목록 발언 –

+3

* 모든 단일 (본문) 태그 *에는 스크립트가 속성에 첨부되어있을 수 있습니다. 스타일. 또한 attr 이름의 화이트리스트가 필요합니다. – Cheekysoft

1

BBCode는 XSS를 방지하려고 시도하는 동안 사용자가 HTML에 제한된 액세스를 허용하는 것으로 대중화되었습니다. BBCode는 전에 HTML Purifier과 같은 솔루션이 인기있게되었습니다. 모든 현실에서 BBCode 및 Html Purifier는 자체 보안 문제가 있습니다. BBCode는이 문제에 대한보다 간단한 해결책이었습니다.

0

BBcode + htmlspecialchar의 모든 왼쪽 태그를 변환하면 완전히 무료입니다. (BBcode 파서가 실제로 슈퍼가 나쁜 설계되지 않은 한)

궁극적으로 두 파일 모두 동일한 목표에 도달합니다. 현재 왼쪽 태그를 html specialChar로 바꾸지 않고 HTMLpurifier 자동 제거 태그 때문에 BBcode를 선택합니다. 적어도 데모에서는 왼쪽 태그를 유지하는 기능을 보지 못했습니다.

사용자가 쓰기를 원하는대로 문제가 있습니다. & lt; 자동 대신에 <으로 변환하십시오. 그리고 모든 데이터를 검증하기위한 게으름의 문제.