2016-09-16 6 views
1

текущего проекта:ASP.NET MVC HTML5 Шаблонный - Content Security Policy убивает все внешние сценарии, даже «белый список» из них

  • ASP.NET 4.5.2
  • MVC 5
  • HTML5 Шаблонный
  • Google ReCaptcha (любой пакет NuGet, сделайте ваш выбор, я уже месили через три из них)

Так кажется, что ничего из outsi de site I am developing прекращается, холодно, по политике безопасности содержимого. Да, в нижней части этой формы должен быть Google ReCaptcha. Не видите? Да ... Это , несмотря на то, что такие вещи, как ajax.googleapis.com, предположительно «белого», через FilterConfig.cs.

Когда я иду на мой сайт и попытаться загрузить его, я получаю ошибку консоли:

Content Security Policy: The page's settings blocked the loading of a resource at https://www.google.com/recaptcha/api.js ("script-src http://http://www.taskgenerator.ca http://localhost:* http://ajax.googleapis.com http://ajax.aspnetcdn.com"). 

Когда я добавляю www.google.com к CspScriptSrcAttribute() внутри FilterConfig.cs, я получаю следующее сообщение об ошибке:

Content Security Policy: The page's settings blocked the loading of a resource at https://www.gstatic.com/recaptcha/api2/r20160913151359/recaptcha__en.js ("script-src http://http://www.taskgenerator.ca http://localhost:* http://www.google.com http://ajax.googleapis.com http://ajax.aspnetcdn.com"). 

Когда я добавляю www.gstatic.com я получаю следующее сообщение об ошибке:

Content Security Policy: The page's settings blocked the loading of a resource at https://www.google.com/recaptcha/api2/anchor?k=6LdHZB4TAAAAAMj_6F7h1ahYTNAjtHqRvWLj_FBx&co=aHR0cDovL3Rhc2tnZW5lcmF0b3IubG9jYWxob3N0Ojgw&hl=en&v=r20160913151359&size=normal&cb=lvhf93b5gk4z ("default-src 'none'"). 

, несмотря на то, что он уже включен в белый список www.google.com, как указано выше.

Это происходит на всем пути вниз & # $!% (@ Кроличья дыра. Кажется, что нет конца. Все, что я хочу, это добавить глупое ReCaptcha на сайт - как сложно . это должно быть ??

Я будучи серьезно убежден беспричинно рвать шаблонный HTML5 от проекта и пойти его сырое/пользовательский/по умолчанию, только чтобы избежать этих трудноразрешимых шоу остановки критических ошибок

Пожалуйста, скажите мне:

  1. Как превратить ВЫКЛ CSP из котла HTML5, или
  2. Как исправить эту проблему для функции, которую должен уже включен в белый список (API Google).

HTML5 MVC Boilerplate pageprovides ZERO advice в этой связи.


EDIT:

Код в моем FilterConfig.cs был первоначально как таковой:

filters.Add(
    new CspScriptSrcAttribute() { 
    CustomSources = string.Join(
     " ", 
#if DEBUG 
     "localhost:*", 
#endif 
     ContentDeliveryNetwork.Google.Domain, 
     ContentDeliveryNetwork.Microsoft.Domain 
    ), 
    Self = true, 
    }); 

С константами (contentdeliverynetwork.cs) как таковая:

public static class ContentDeliveryNetwork { 
    public static class Google { 
    public const string Domain = "ajax.googleapis.com"; 
    public const string JQueryUrl = "//ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"; 
    } 
    public static class MaxCdn { 
    public const string Domain = "maxcdn.bootstrapcdn.com"; 
    public const string FontAwesomeUrl = "//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"; 
    } 
    public static class Microsoft { 
    public const string Domain = "ajax.aspnetcdn.com"; 
    public const string JQueryValidateUrl = "//ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/jquery.validate.min.js"; 
    public const string JQueryValidateUnobtrusiveUrl = "//ajax.aspnetcdn.com/ajax/mvc/5.2.3/jquery.validate.unobtrusive.min.js"; 
    public const string ModernizrUrl = "//ajax.aspnetcdn.com/ajax/modernizr/modernizr-2.8.3.js"; 
    public const string BootstrapUrl = "//ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/bootstrap.min.js"; 
    } 
} 

и даже модификации к следующему:

filters.Add(
    new CspScriptSrcAttribute() { 
    CustomSources = string.Format("google.com www.gstatic.com www.google.com localhost:* ajax.googleapis.com ajax.aspnetcdn.com"), 
    Self = true, 
    }); 

не помогает.

+0

... Bueller? ... Bueller? –

ответ

0

Chrome обычно сообщает вам, что блокируется, как вы нашли. Вам просто нужно добавить все исключения, о которых вам рассказывают. При этом, если вы хотите отключить CSP, прокомментируйте следующую строку:

public static class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     AddSearchEngineOptimizationFilters(filters); 
     AddSecurityFilters(filters); 
     AddContentSecurityPolicyFilters(filters); // Comment this out 
    } 

    // ...Omitted 
} 
+0

Проблема у меня в том, что все круги обратно на google.com, который уже был белым, но все еще блокируется. Проверьте третье сообщение об ошибке - я получаю это даже с www.google.com в белом списке. –

+0

Вы добавили 'http: // www.google.com', но не' https: // www.google.com', обратите внимание на 's'. Фактически вы можете добавить '* .google.com', чтобы включить оба. –

+0

... и я все еще получаю сообщение о третьем сообщении об ошибке. Он помечен www.google.com, хотя я явно добавил * .google.com –