2011-03-15 7 views
1

방금 ​​내 응용 프로그램에서 서식있는 텍스트 항목에 대한 CKEditor 구현 한 및 사용자가 아무것도 입력 할 수있는 능력을 보안 위협을 제기 할 수 있다고 생각입니다.CKEditor를 사용하여 보안 함의

현재로서는 CKEditor가 양식에 있고 입력이 update_attributes의 일부로 데이터베이스에 저장되며 다른 사람들은 출력을 html_safe으로 볼 수 있습니다.

어쨌든 위의 내용은 작동한다고해도 나에게는 좋지 않습니다. 위의 방법에 위험이 있다고 생각하는 것이 맞습니까? 에디터를 통한 공격을 차단하기위한 더 안전한 방법이 있습니까?

답변

1

사용자 입력을 항상 위생적으로 처리해야합니다. 귀하의 경우, 어디서 왔는지에 관계없이 원하지 않는 HTML 태그 (예 :)를 모두 제거하십시오.

html_safe은 HTML을 제거하거나 위생적으로 처리하지 않습니다. Yehuda Katz' article (ActiveSupport::SafeBuffer)을 참조하십시오. 그것은 "안전하지 않은"마크 업을 방지하기위한 것으로 String을 안전한 것으로 표시하고 그렇지 않은 경우 HTML 엔티티로 인코딩하여 안전하게 만듭니다.

ActionView::Helpers::SanitizeHelper에 위생 헬퍼가 있는데 표시되는 내용을 살균하는 데 사용할 수 있지만 데이터베이스에 들어가기 전에 위생을 원할 수도 있습니다.

CSS, 자바 스크립트 또는 iframe을 삽입 할 가능성이 없어지면 문제가되지 않습니다. 사용자가하는 일에 대해 편집증 환자라면 <img> 태그도 삭제하십시오. 그리고 정말로 편집증 환자라면 Markdown, 섬유 등을 사용해보십시오.

+1

안녕하세요 fx_ - 답변 해 주셔서 감사합니다. 나는 이것을 Application.rb에 넣었습니다 :'config.action_view.sanitized_allowed_tags = % w (h1 h2 h3 h4 b i pre div span br 강도 높게 강한 스트라이크 img)'. 이것은'sanitize (@ notes.body)'와 결합하여 CSS, JS, iframe 등을 제거합니까? – sscirrus

+0

_이 sanitize 도우미는 모든 태그를 html로 인코딩하고 특별히 허용되지 않는 모든 속성을 제거합니다. _ - ['ActionView :: Helpers :: SanitizeHelpers # sanitize'] 참조 (http://apidock.com/rails/ActionView/ 헬퍼/SanitizeHelper/sanitize) –

관련 문제