2013-03-03 3 views
1

Ive работает на анализе безопасности для клиента и наткнулся на эту линию в config.xml Ее PhoneGap приложение для андроид устройствPhoneGap и междоменного вызывает

<access origin=".*"/> 

Если бы это было только начало = * я бы знал, что это означает, что он может получить доступ к любому другому сайту. но что значит. * Означает? это то же самое, что и *?

благодаря

+0

Я бы предположил, что это выражение регулярных выражений, где '. *' Означает «соответствует нулю с N вхождения любого символа». – CommonsWare

ответ

1

От Кордова Android source code:

private void _addWhiteListEntry(String origin, boolean subdomains) { 
    try { 
     // Unlimited access to network resources 
     if (origin.compareTo("*") == 0) { 
      LOG.d(TAG, "Unlimited access to network resources"); 
      this.whiteList.add(Pattern.compile(".*")); 
     } else { // specific access 
      // check if subdomains should be included 
      // TODO: we should not add more domains if * has already been added 
      if (subdomains) { 
       // XXX making it stupid friendly for people who forget to include protocol/SSL 
       if (origin.startsWith("http")) { 
        this.whiteList.add(Pattern.compile(origin.replaceFirst("https?://", "^https?://(.*\\.)?"))); 
       } else { 
        this.whiteList.add(Pattern.compile("^https?://(.*\\.)?" + origin)); 
       } 
       LOG.d(TAG, "Origin to allow with subdomains: %s", origin); 
      } else { 
       // XXX making it stupid friendly for people who forget to include protocol/SSL 
       if (origin.startsWith("http")) { 
        this.whiteList.add(Pattern.compile(origin.replaceFirst("https?://", "^https?://"))); 
       } else { 
        this.whiteList.add(Pattern.compile("^https?://" + origin)); 
       } 
       LOG.d(TAG, "Origin to allow: %s", origin); 
      } 
     } 
    } catch (Exception e) { 
     LOG.d(TAG, "Failed to add origin %s", origin); 
    } 
} 

Так, очевидно, они рассматривают все, как регулярное выражение, если это не совсем *. Вероятно, не очень хорошая идея доверять этому поведению, так как это не documented, а не в целевой задаче W3C Widget Access. (Я думаю, что это, вероятно, даже не предназначено.)

Однако .* по-прежнему используется в шаблоне проекта PhoneGap 2.5.0, поэтому на данный момент все в порядке, пока вы остаетесь с одной версией PhoneGap.

0

* средство подстановочные знаки. При наличии * присутствует, это означает, что приложение может получить доступ к любому внешнему сайту. Это вы заменяете * доменом, а затем только приложение сможет получить доступ к этому частному сайту.

<access origin="*" /> // all external domains 
<access origin="http://google.com" /> // app can only reach google all other doamins are restricted 
Смежные вопросы