Jsp 如何绕过siteminder获取包含单引号的url?

Jsp 如何绕过siteminder获取包含单引号的url?,jsp,authentication,web-applications,xss,siteminder,Jsp,Authentication,Web Applications,Xss,Siteminder,在我的应用程序代码中,我使用这种url将用户从一个页面重定向到另一个页面:http://myhost:8001/myapp/list.jsp?name=abc‘d&age=10 此处的名称是动态字段,用户可以在第一页上编辑该字段,该页面中可以包含单引号 现在的问题是,当我使用siteminder进行身份验证时,每个url都会通过它。siteminder将此引用视为此类攻击的一种尝试,阻止此url并将用户带到某个被阻止的访问页面 如何解决此问题?尝试用%27对单引号进行URI编码。我认为URI编码

在我的应用程序代码中,我使用这种url将用户从一个页面重定向到另一个页面:
http://myhost:8001/myapp/list.jsp?name=abc‘d&age=10
此处的名称是动态字段,用户可以在第一页上编辑该字段,该页面中可以包含单引号

现在的问题是,当我使用siteminder进行身份验证时,每个url都会通过它。siteminder将此引用视为此类攻击的一种尝试,阻止此url并将用户带到某个被阻止的访问页面


如何解决此问题?

尝试用%27对单引号进行URI编码。

我认为URI编码行不通——Siteminder足够聪明,可以解决这个问题。一些其他类型的编码,比如base64,或者只是用其他东西替换撇号,然后在服务器端将其替换回来。或者,您可以在Siteminder代理配置中禁用BadCSSChar检查撇号。请注意,您的网站可能会受到XSS攻击,您的应用程序必须负责在网页上显示任何用户提供的字符串之前检查这些字符串。

如果两端都有代码运行,您可以发送mySingleQuoteToken,远端的代码可以检测到这些字符串,并将其替换为'

在发送端进行预处理-在调用java.net.URLEncoder之前:

url_new = url_old.replaceAll("'", "mySingleQuoteToken");
接收端的后处理-调用java.net.urldecker后:

url_new = url_old.replaceAll("mySingleQuoteToken", "'");

以下步骤可以帮助您解决问题

  • 将字段name和age包含在HTML表单中
  • 使用action属性指定不带查询参数的URL
  • 将方法指定为POST using方法属性
  • 使用enctype属性将enctype指定为application/x-www-form-urlencoded
  • 输入值并提交表单

    <form action="/myapp/list.jsp" method="post" enctype="application/x-www-form-urlencoded">
        <input type="text" id="name" name="name" value=""/>
      <br/>
      <input type="text" id="age" name="age" value=""/>
      <br/>
      <input type="submit"/>
    </form>
    
    
    


  • 这没用。Siteminder仍然限制对此url的访问。有什么办法可以解决这个问题吗?这个答案质量很差,您有没有代码示例可以详细说明您的解决方案?