ruby
  • ruby-on-rails-3
  • nokogiri
  • hpricot
  • sanitize
  • 2012-07-13 6 views 0 likes 
    0

    우리는 사용자 입력 HTML을 정리하기 위해 Sanitize gem과 HTMLEntities를 조합하여 사용하고있었습니다. Sanitize 보석은 Hpricot을 사용했지만 현재 Nokogiri를 사용합니다. 나는 앱에서 Hpricot을 꺼내야한다.HTML을 깨끗이 정리하고 루비/레일스 + Nokogiri + Sanitize (?)로 느슨한 HTML 문자를 보존합니다.

    테스트 문자열 1 :

    "SOME TEXT < '<span style='background-image: url(\"http://evil.ru/webbug.png\")'>MORE' & TEXT!!!</span>" 
    
    expected_text = "SOME TEXT < 'MORE' & TEXT!!!" 
    

    2 테스트 문자열 (약간 다른 경로)

    'Support <i>odd</i> chars like " < \' ‽' 
    
    expected_text = 'Support <i>odd</i> chars like &quot; &lt; &#39; ‽' 
    
    여기

    는 I 기대있어 출력 이어 두 시험 스트링 각각은

    해결하셨습니까? 어떤 도구를 사용 했습니까?

    +0

    죄송합니다, 나는 당신의 질문을 이해할 수 없습니다. 당신은 당신의 검사가 실패하고 있다고 말합니다. 예상되는 결과 대신 당신이 얻는 결과는 무엇입니까? 일부 태그를 삭제하거나, 일부를 남기고, 특수 문자를 HTML 엔터티로 이스케이프하도록 하시겠습니까? – Macario

    +0

    나는 명확성을 위해 질문을 편집했다. 하지만 네, 첫 번째 문자열에 대해 html 태그는 제거 될 것으로 예상되지만 느슨한 '<'는 남아 있습니다. – whatbird

    답변

    2

    당신은 세미 보석 시도 할 수 있습니다 :

    Loofah.document("SOME TEXT < '<span style='background-image: url(\"http://evil.ru/webbug.png\")'>MORE' & TEXT!!!</span>").to_html 
    => "SOME TEXT MORE' &amp; TEXT!!!" 
    

    세미 어떤 이유로 두 번째 예에서 유니 코드 문자를 처리되지 않습니다,하지만 난 당신이 파일 경우로보고 드리겠습니다 수세에 관한 Github Issue (전체 공개 : 저는 Loofah의 저자이자 Nokogiri의 공동 저자입니다).

    좀 더 링크 :

     관련 문제

    • 관련 문제 없음^_^