如果URL插入到JavaScript字符串中,是否可以进行JavaScript注入?

如果URL插入到JavaScript字符串中,是否可以进行JavaScript注入?,javascript,security,xss,code-injection,url-encoding,Javascript,Security,Xss,Code Injection,Url Encoding,是否可以在以下上下文中插入和执行javascript?或者终止JavaScript字符串 URL插入到JavaScript字符串中(双引号分隔) URL是由浏览器而不是服务器端编码的URL。 (为了简单起见,仅使用Firefox和Chrome) URL永远不会被解码(JavaScript或后端) 例如: var baseURL = "http://example.com/?[USER CONTROLLED INPUT]"; 请注意,通过提供以“\”结尾的字符串,可能会导致未终止的字符串文字

是否可以在以下上下文中插入和执行javascript?或者终止JavaScript字符串

  • URL插入到JavaScript字符串中(双引号分隔)
  • URL是由浏览器而不是服务器端编码的URL。 (为了简单起见,仅使用Firefox和Chrome)
  • URL永远不会被解码(JavaScript或后端)
例如:

var baseURL = "http://example.com/?[USER CONTROLLED INPUT]";
请注意,通过提供以“
\
”结尾的字符串,可能会导致未终止的字符串文字JavaScript错误。假设此错误不会影响用户输入的其他使用

注意:浏览器URI编码目前有所不同

给定以下URL:

example.com?!*'();:@&=+$,/?[]"%-.<>\^_`{|}~#
  • Chromium 32.0提交:

    http://example.com/?!*%27();:@&=+$,/?[]%22%-.%3C%3E\^_`{|}~#
    

  • 如果这是唯一的注入点,那么我必须同意您的假设,即唯一可能造成的损害是未终止的JavaScript字符串文字

    但是,如果有多个注射点,即。e、 ,三个或更多,在一行中,如下所示:

    var x = "[USER CONTROLLED INPUT]", y = "[USER CONTROLLED INPUT]", z = "[USER CONTROLLED INPUT]";
    
    可以插入JavaScript代码:

    x = \
    y = +alert(1)+
    z = //
    
    因为这将导致:

    var x = "\", y = "+alert(1)+", z = "//";
    

    要求注入点都在同一行中。

    我怀疑
    是否确实提交了。)如果您的服务器正在输出
    [用户控制输入]
    ,则是的,用户可以输入
    “警报('foobar');”
    “警报”而不破坏代码。如果它是由javascript构建的,那么它不会崩溃,除非它被用来生成html。最好的一种是正确的。凯文:用户的特殊字符是由浏览器编码的url。结果是:“example.com/?%22;警报(%27foobar%27);%20=%20%22”;虽然它可能是一个凌乱的字符串,但它不是javascript注入。
    var x = "\", y = "+alert(1)+", z = "//";