2011-04-24 2 views
1

클라이언트의 TinyMCE를 구현하여 사이트의 관리 패널에서 간단하고 익숙한 인터페이스를 통해 프런트 엔드 콘텐츠를 편집 할 수 있습니다.TinyMCE, PHP 및 MySQL : 보안 및 이스케이프 질문

이전에 TinyMCE를 사용 해보지 않았지만 원하는 마크 업을 삽입 할 수 있으며 TinyMCE의 내용을 이스케이프 처리하지 않고 MySQL 데이터베이스에 저장하면 행복하게 저장됩니다. 질문.

작은 따옴표를 삽입하여 SQL 쿼리 전체를 중단시킬 수도 있습니다.

물론 콘텐츠를 벗어나면 단락 태그와 같은 유익한 프리젠 테이션 콘텐츠가 HTML 항목으로 변환되므로 WYSIWYG 편집기의 전체적인 점은 패배합니다. 왜냐하면 엔티티가 표시 할 때 프런트 엔드에 저장된 콘텐츠

TinyMCE의 콘텐츠를 "선택적으로 탈출"하여 P 및 BR과 같은 무해한 태그를 유지하지만 SCRIPT, IFRAME 등과 같은 위험한 태그를 제거 할 수있는 방법이 있습니까? str_replace() 등을 사용하여 수동으로 인코딩 및 디코드 할 필요는 없지만 클라이언트에게 보안 취약점을 제공하지는 않습니다.

감사합니다.

답변

3

htmlpurifier를 사용해 보셨습니까? 경이로움을 선사합니다. 그것의 경고; 크고 천천히, 그러나 당신이 가질 수있는 최선.

http://htmlpurifier.org.

2

죄송합니다. TinyMCE의 작성자에게이 질문에 대해 말씀 드리고 싶습니다. 문의 하시려면 http://tinymce.moxiecode.com/enterprise/support.php ... 답변 드리겠습니다. (약간의 수수료 만 내면) , 그리고 나는 이것이 심지어 FAQ 중 하나일지도 모른다라고 생각한다.

스택 오버플로, "일반 프로그래밍 포럼"에서 다른 TinyMCE 사용자 (권한있는 것은 말할 것도없고)를 친다면 당신이 매우 운이 좋을 것이라고 생각합니다. 현재이 포럼에 "tinymce"라는 태그가 달린 837 개의 질문; 당신이 그들을 통해 검색을 시도 했습니까? 그 중 하나에 포인터가있을 수 있습니까?

건배. 키이스.

편집 : 예, Making user-made HTML templates safe은 다소 다른 단어로 제기 된 동일한 질문이며 실용적인 해결책을 제시하는 몇 가지 답변이 있습니다. 나는 "작은 MCE html 보안"을 위해 스택 오버 플로우를 검색했다.

2

Microsoft Word에서 장난 꾸러기 단어를 쓸 수 있으며 Word에서이 단어를 필터링해야한다고 불평하는 것과 같습니다. 또는 GM에 불만을 제기하고 자동차를 제작 한 다음 은행 강도로 탈출 차량으로 사용합니다. TinyMCE의 임무는 콘텐츠 편집기가 아닌 온라인 편집자가되는 것입니다.

특정 태그를 금지해야하는 경우 strip_tags()을 사용하여 제출할 때 태그를 제거하십시오. 또는 더 나은 아직, 총알 방지 sanitization에 대한 HTMLpurifier. 내장 된 따옴표가 SQL을 손상시키는 경우 제출 된 문서를 mysql_real_escape_string()을 통해 전달했거나 PDO 준비 쿼리를 먼저 사용하지 않은 이유는 무엇입니까? MCE는 서버 측 처리가 무엇인지 전혀 알지 못합니다. 데이터의 처리 방법을 결정하는 것은 최종 사용자의 궁극적 인 목적이 무엇인지 알기 때문에 결정해야합니다.

어쨌든 모든 편집자가 클라이언트 측에서 작동한다는 것을 기억하십시오. TinyMCE를 원하는대로 편집 할 수 있으며 엄격한 편집자로 만들 수는 있지만 여전히 클라이언트에서 실행 중입니다.악의적 인 사용자가 완전히 우회하여 원하는 모든 내장 된 따옴표와 나쁜 태그를 제출할 수는 없습니다. 데이터를 지우는 궁극적 인 책임은 서버에서 실행중인 코드가 떨어지는 것입니다. 마지막 방어선 일 뿐이며 데이터베이스를 원래대로 유지할 수있는 유일한 것입니다. 다른 것은 돼지 립스틱입니다.