From aebe48c7840b8db31f89b77180f1a9ad0a312b05 Mon Sep 17 00:00:00 2001 From: f Date: Sun, 8 Aug 2021 21:43:57 -0300 Subject: [PATCH] Simplificar el procesamiento de CORS Y ahora permitir cualquier URL posible :D --- config/initializers/cors.rb | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/config/initializers/cors.rb b/config/initializers/cors.rb index 812a11e..44484d1 100644 --- a/config/initializers/cors.rb +++ b/config/initializers/cors.rb @@ -13,29 +13,19 @@ Rails.application.config.middleware.insert_before 0, Rack::Cors do # El problema sería que otros sitios con JS malicioso hagan pedidos # a nuestra API desde otros sitios infectados. # - # XXX: La primera parte del dominio tiene que coincidir con el - # nombre del sitio. - # # XXX: Al terminar de entender esto nos pasó que el servidor recibe # la petición de todas maneras, con lo que no estamos previniendo # que nos hablen, sino que lean información. Solo va a funcionar si # el servidor no tiene el Preflight cacheado. # # TODO: Limitar el acceso desde Nginx también. - # - # TODO: Poder consultar por sitios por todas sus URLs posibles. origins do |source, _| # Cacheamos la respuesta para no tener que volver a procesarla # cada vez. Rails.cache.fetch(source, expires_in: 1.hour) do - uri = URI(source) - - if (name = uri&.host&.split('.', 2)&.first).present? - Site.where(name: [name, uri.host + '.']).pluck(:name).first.present? - else - false - end - rescue URI::Error + hostname = URI(source)&.host + hostname.present? && Deploy.find_by_hostname(hostname).present? + rescue StandardError false end end