You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@knox.apache.org by "Jeffrey E Rodriguez (JIRA)" <ji...@apache.org> on 2017/03/29 03:43:41 UTC

[jira] [Comment Edited] (KNOX-791) "&#x" render issue

    [ https://issues.apache.org/jira/browse/KNOX-791?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15946480#comment-15946480 ] 

Jeffrey E  Rodriguez edited comment on KNOX-791 at 3/29/17 3:43 AM:
--------------------------------------------------------------------

Would like bring up am issue that this Jira may have caused. Maybe the community at large can comment.

Before KNOX-791 "&amp;amp;" used to be decoded to "&" during html parsing.

The issue is that in OUT rewrite rule we will not able to match the query string.

Example:

given html
<a href=http://foo:99/test/&amp;q=bar”>test</a>

rule:
{code:xml}
<rule dir="OUT" name="test"   pattern="("{scheme}://{host}:{port}/test/?{*}">
     <rewrite template="("http://newtest/test/?{*}?{scheme}?{host}?{port}"/>
 </rule>
{code}

This rule above will not work since the “&amp; amp;“ will not be matched.


The following test illustrates the issue of what we would like
to solve.
{code:title=testAmpRewrite.java|borderStyle=solid}
@Test
  public void testAmpRewrite() throws Exception {
    URI goodUri, badUri, outputUri;
    Matcher<Void> matcher;
    Matcher<Void>.Match match;
    Template input, pattern, template;
    badUri = new URI(
        "http://foo:99/test/&amp;q=bar"); // we should be able to match
    goodUri = new URI(
        "http://foo:99/test/?q=bar");

    input = Parser.parseLiteral(goodUri.toString());
    pattern = Parser.parseTemplate("{scheme}://{host}:{port}/test/?{*}");
    template = Parser.parseTemplate("http://newtest/test/?{*}?{scheme}?{host}?{port}");

    // Match query string
    String expectedUri = "http://newtest/test/?scheme=http&host=foo&port=99&q=bar";
    matcher = new Matcher<Void>();
    matcher.add(pattern, null);
    match = matcher.match(input);
    assertNotNull( match );
    outputUri = Expander.expand(template, match.getParams(), null);
    assertEquals("Not matched", expectedUri, outputUri.toString());//

    // no match of query string ?
    input = Parser.parseLiteral(badUri.toString()); 
    match = matcher.match(input);
    assertNull( match); // Shows that we are not able to match ?
  }

{code}

Maybe we should made an exception for "&" on a query string. Another alternative is to add a decode option or alternative way to decode the encoded "&".

This is causing some issues on the Spark UI through Knox we are planning contributing.

Thanks.
       Jeff Rodriguez




was (Author: jeffreyr97):
Would like bring up am issue that this Jira may have cause. Maybe the community at large can comment.

Before KNOX-791 "&amp;amp;" used to be decoded to "&" during html parsing.

The issue is that in OUT rewrite rule we will not able to match the query string.

Example:

given html
<a href=http://foo:99/test/&amp;q=bar”>test</a>

rule:
{code:xml}
<rule dir="OUT" name="test"   pattern="("{scheme}://{host}:{port}/test/?{*}">
     <rewrite template="("http://newtest/test/?{*}?{scheme}?{host}?{port}"/>
 </rule>
{code}

This rule above will not work since the “&amp; amp;“ will not be matched.


The following test illustrates the issue of what we would like
to solve.
{code:title=testAmpRewrite.java|borderStyle=solid}
@Test
  public void testAmpRewrite() throws Exception {
    URI goodUri, badUri, outputUri;
    Matcher<Void> matcher;
    Matcher<Void>.Match match;
    Template input, pattern, template;
    badUri = new URI(
        "http://foo:99/test/&amp;q=bar"); // we should be able to match
    goodUri = new URI(
        "http://foo:99/test/?q=bar");

    input = Parser.parseLiteral(goodUri.toString());
    pattern = Parser.parseTemplate("{scheme}://{host}:{port}/test/?{*}");
    template = Parser.parseTemplate("http://newtest/test/?{*}?{scheme}?{host}?{port}");

    // Match query string
    String expectedUri = "http://newtest/test/?scheme=http&host=foo&port=99&q=bar";
    matcher = new Matcher<Void>();
    matcher.add(pattern, null);
    match = matcher.match(input);
    assertNotNull( match );
    outputUri = Expander.expand(template, match.getParams(), null);
    assertEquals("Not matched", expectedUri, outputUri.toString());//

    // no match of query string ?
    input = Parser.parseLiteral(badUri.toString()); 
    match = matcher.match(input);
    assertNull( match); // Shows that we are not able to match ?
  }

{code}

Maybe we should made an exception for "&" on a query string. Another alternative is to add a decode option or alternative way to decode the encoded "&".

This is causing some issues on the Spark UI through Knox we are planning contributing.

Thanks.
       Jeff Rodriguez



> "&#x" render issue
> ------------------
>
>                 Key: KNOX-791
>                 URL: https://issues.apache.org/jira/browse/KNOX-791
>             Project: Apache Knox
>          Issue Type: Bug
>            Reporter: Prabhjyot Singh
>            Assignee: Sandeep More
>             Fix For: 0.11.0
>
>         Attachments: KNOX-791.001.patch, KNOX-791.002.patch, ss.png
>
>
> If "&#x" is used as a value for any attribute in any tag say <a> or <input> then it is being treated/rendered different.
> An example to reproduce will be 
> {code:java}
> <input placeholder="&#xf002 Filter" style="font-family:FontAwesome">
> {code}
> The above should look like; !ss.png|screen shot!
> Or another example would be:
> {code:java}
> <a href="http://google.com/param1=123&#xparam2=890">test link</a>
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)