2014-07-09 1 views
1

나는 내 사이트에서 포럼 기능의 일부로 tinymce를 사용했습니다. 나는 textarea의 innerHTML을 가져 와서 SQL 데이터베이스 안에 저장하고있다.데이터베이스 보안 문제로 생성 된 마크 업을 저장합니다.

스레드 포스트를 볼 때 마크 업을 검색합니다.

내가하고있는 일을하는 데 보안 문제가 있습니까? tinymce에는 악의적 인 내용/마크 업이 추가되어 저장되는 것을 막을 수있는 inbuilt 기능이 있습니까?

+0

도움이 될만한 답변이 있다면 알려주세요. – SilverlightFox

답변

2

TinyMce는 (클라이언트 측에서) 앤티 콘택트 스크럽 및 입력 정리를 훌륭하게 해줍니다. 매우 인기있는 웹 리치 텍스트 편집기이기 때문에 제작자는 편집자에게 악성 컨텐츠의 간단한 복사 및 붙여 넣기를 방지하는 측면에서 상당히 안전하게 만드는 데 많은 노력을 기울였습니다. 정리 활성화/비활성화, 허용되는 태그/속성/문자 지정 등을 할 수 있습니다.

TinyMce Configurations Page을 참조하십시오. 노트의 옵션은 다음과 같습니다 valid_elements는, invalid_elementsverify_html, valid_styles, invalid_styles, 또한 extended_valid_elements

이 : 대신 텍스트 영역의 innerHTML을 잡아, 당신은 아마 TinyMCE에의의 getContent() 함수를 사용한다. 참조 : getContent()

그러나 이것은 모두 클라이언트 측 javascript입니다.

이러한 기능은 훌륭하지만이 정리는 여전히 클라이언트에서 발생합니다. 클라이언트 JS가 악의적 인 콘텐츠의 탈출/제거를 중단하도록 수정 될 수 있습니다. 또는 누군가가 브라우저를 거치지 않고도 (curl 또는 다른 수의 도구를 사용하여) 요청 처리기에 잘못된 데이터를 POST 할 수 있습니다.

그래서 tinyMce는 클라이언트 스크러빙의 좋은 기준을 제공하지만 안전하기 때문에 서버는 보내지는 것이 무엇이든 더러운 것으로 가정해야하므로 모든 내용을 신중하게 다루어야합니다. 서버에서 수행 할 수 있습니다

것들 :

당신은 가장 정교한 클라이언트 측 유효성 검사/세정/예방을 구현하더라도, 그건 지금까지 백엔드의 보안에 관한 한 가치가있다. 악의적 인 데이터 삽입 방지에 대한 훌륭한 참고 자료는 OWASP Cross Site Scripting Prevention Cheat SheetOWASP SQL Injection Prevention Cheat Sheet에서 찾을 수 있습니다. SQL 주입 유형 공격뿐만 아니라 사용자가 제출 한 데이터가 웹 사이트에 표시되어 다른 의심하지 않는 사용자가 볼 수있는 경우 XSS 공격으로부터 보호해야합니다.

서버에서 사용자 입력 데이터를 살균하는 것 외에도 mod_security과 같은 것을 시도해 악의적 인 요청을 나타내는 특정 패턴이 포함 된 요청을 스쿼시 할 수 있습니다. 또한 클라이언트 및 서버 측 모두 최대 입력 길이를 적용 할 수있을뿐만 아니라 서버의 최대 요청 크기를 추가하여 누군가가 GB 데이터를 보내지 않도록 할 수 있습니다. 최대 요청 크기를 설정하는 방법은 서버마다 다릅니다. 최대 요청 크기를 위반하면 HTTP 413/Request Entity Too Large

+0

불행히도 getContent는 ASPX 백엔드에서 마크 업에 액세스하고 있기 때문에 문제가되지 않습니다. 그리고 서버 측에서 클라이언트 사이드 자바 스크립트를 호출하여 콘텐츠를 다시 조회 할 수있는 방법을 알 수 없습니다! – RenegadeAndy

0

@jCuga's excellent answer 외에도 서식있는 텍스트를 출력하는 모든 페이지에 Content Security Policy을 구현해야합니다.

이렇게하면 효과적으로 브라우저에서 인라인 스크립트를 실행하지 못하게 할 수 있습니다. 현재 Chrome 및 Firefox와 같은 최신 브라우저는 supported by입니다.

페이지의 HTTP 응답 헤더에 의해 수행됩니다.

Content-Security-Policy: script-src 'self' https://apis.google.com 

는 사용자가 페이지에 주입 관리하는 경우 실행되는 인라인 자바 스크립트를 중지합니다 (그것은 경고와 함께 무시됩니다)하지만 스크립트 태그는 자신의 서버 또는 https://apis.google.com 중 하나를 참조 할 수 있습니다. 필요한 경우 사용자 요구에 맞게 사용자 정의 할 수 있습니다.

HTML 살균기를 사용하여 악의적 인 태그를 제거하는 경우에도 인터넷을 통해 미끄러지는 경우를 대비해 CSP와 함께 사용하는 것이 좋습니다.

관련 문제