Закрытие тега парсера

Я использую Антисами для проверки HTML. Моя политика разрешает использование фреймов, таких как видео на YouTube. Проблема в том, что если тег пуст (как это):

<iframe src="//www.youtube.com/embed/uswzriFIf_k?feature=player_detailpage" allowfullscreen></iframe>

чем после уборки будет так:

<iframe src="//www.youtube.com/embed/uswzriFIf_k?feature=player_detailpage" allowfullscreen/>

Но у него должен быть нормальный закрывающий тег.

И это нарушит весь контент на странице после. Я уже установил свои директивы для использования большей части HTML, но не XML:

<directives>
    <directive name="omitXmlDeclaration" value="true"/>
    <directive name="omitDoctypeDeclaration" value="true"/>
    <directive name="maxInputSize" value="200000"/>
    <directive name="nofollowAnchors" value="true" />
    <directive name="validateParamAsEmbed" value="true" />
    <directive name="useXHTML" value="false"/>

    <directive name="embedStyleSheets" value="false"/> 
    <directive name="connectionTimeout" value="5000"/>
    <directive name="maxStyleSheetImports" value="3"/>
    <directive name="formatOutput" value="false"/>
</directives>

Но это не поможет.

UPD: переключение между парсерами и игра с директивами до сих пор не дали никаких результатов.

UPD2: это часть моей конфигурации, отвечающая за обработку iframe тег:

    <tag name="iframe" action="validate">
        <attribute name="src">
            <regexp-list>
                <regexp name="youtube"/>
                <regexp name="slideshare"/>
            </regexp-list>
        </attribute>
        <attribute name="allowfullscreen">
             <regexp-list>
                 <regexp name="anything"/>
             </regexp-list>
        </attribute>
        <attribute name="scrolling">
            <regexp-list>
                <regexp name="anything"/>
            </regexp-list>
        </attribute>
        <attribute name="marginwidth">
            <regexp-list>
                <regexp name="anything"/>
            </regexp-list>
        </attribute>
        <attribute name="marginheight">
            <regexp-list>
                <regexp name="anything"/>
            </regexp-list>
        </attribute>
        <attribute name="frameborder">
            <regexp-list>
                <regexp name="anything"/>
            </regexp-list>
        </attribute>
        <attribute name="style"/>
    </tag>

Любая идея?

1 ответ

Попробуй это -

<tag name="iframe" action="validate"/>

И добавить тег в этот список -

<allowed-empty-tags>
   <literal-list>
      <literal value="iframe"/>
   </literal-list>
</allowed-empty-tags>

См. Http://code.google.com/p/owaspantisamy/...

Я столкнулся с той же проблемой. В моем случае это было связано с политикой AntiSamy, имеющей такую ​​директиву:

<directive name="useXHTML" value="true" /> 

Который, согласно документации OWASP, выведет очищенные данные в формате XHTML, а не просто обычный HTML. Пожалуйста, смотрите: https://www.owasp.org/index.php/AntiSamy_Directives

Если изменить это значение на false, то обработанный вывод будет предоставлен в виде действительного HTML. Элементы уровня блока не будут сокращены и станут недопустимой разметкой.

Другие вопросы по тегам