Needlworks / Textcube

Textcube : Brand yourself! / Personalized web publishing platform with multi-user support
http://www.textcube.org
Other
207 stars 55 forks source link

TinyMCE 에디터가 본문 html의 title attr를 임의로 제거 #1851

Closed zvuc closed 7 years ago

zvuc commented 8 years ago

TinyMCE에서 입력된 포스팅을 저장/HTML 편집 모드에서 위지윅으로 전환할때 Sanitize를 하면서 걷어내는 것 같은데, title attribute가 제거되는 것을 발견했습니다. 저의 경우에는 글 일부에서 title태그의 attribute를 읽어서 본문 자바스크립트 기능에 활용하는 것이 있는데 현재 버전의 에디터에서 해당 태그를 입력한 뒤 저장을 하거나 위지윅으로 전환한후 다시 html코드를 보면 title=""부분이 삭제되네요.

이 외에도 각종 html코드가 입력한 뒤에 사라져버리는 문제가 있어서 포스팅 내에 레이아웃을 위해 좀 복잡한 코드를 쓰고 싶을때 불편했던 적이 있는데요. 아직도 여전히 아무 문자가 들어있지 않은 element는 비어있다고 판단되어 없애버립니다 (<div class="parent"><span class="something"></span></div> 를 입력한 경우 div는 아무 텍스트가 없어도 사라지지 않지만 span은 날려버립니다). 일관성 없는 동작이라고 생각되는데 이 부분은 TinyMCE의 문제인지 텍스트큐브상 문제인지 알기가 어렵네요.

Sanitize가 보안을 위한것은 이해하고 있고 걷어내는 것이 대부분의 경우 좋겠지만 title같은 경우 위험성이 있는 태그에는 속하지도 않는 것으로 알고 있고, 솔직히 저는 개인 블로그의 글을 입력하는데 script도 허용이 되는 판에 (임베딩을 위해서 필요하니) 아예 sanitize를 끌 수 있는 옵션이 있다면 그것도 괜찮지 않나 싶습니다. Sanitize가 아니고 html를 에디터가 알아서 tidy해주는 과정에서 날려먹는 것이라면 그건 그것대로 문제라고 생각되고요.

마이너한 부분이긴 하지만 글 작성하다 의도치 않게 글의 일부를 날려먹게 되는것만큼 블로깅에 있어서 힘이 빠지는 일도 없다보니.. 시간 될때 확인 부탁드리겠습니다.

inureyes commented 8 years ago

@zvuc 네 TTML 마크업 코드의 예외처리 목록에서 제거하겠습니다. HTML의 경우엔 한 번 살펴봐야겠네요. 현재

이 있는데, 양쪽 중 어떤 경우에 속하는지 확인해 볼게요.

inureyes commented 8 years ago

@zvuc 지금 에디터 레벨에서 텍스트큐브의 추가 설정에 의해 통과되는 추가 태그 목록 ( http://archive.tinymce.com/wiki.php/Configuration:extended_valid_elements ) 은

div[class|style|align|width|height|id|more|less], img[class|src|border|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name|longdesc|style], pre[], code[], object, br

입니다. custom attribute가 있을 경우 여기에 추가하면 되는 식입니다. title이 필요한 경우 추가하는 식으로 대응하면 될 듯 합니다.

툴이 멀티유저 블로그 서비스를 만들 수 있게 되어 있다 보니, 화이트리스트를 기준으로 컨텐트 정리하게 된 부분들이 있습니다. 일단 소스에 해당 attribute를 보존할 수 있게 해 놓겠습니다.