5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-15 07:11:43 +00:00

Revert "cors simplificado"

This reverts commit 2a97fa8174.
This commit is contained in:
f 2020-12-08 20:37:26 -03:00
parent 2a97fa8174
commit 077a43ed65

View file

@ -6,8 +6,36 @@
# @see {https://github.com/cyu/rack-cors#origin} # @see {https://github.com/cyu/rack-cors#origin}
Rails.application.config.middleware.insert_before 0, Rack::Cors do Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do allow do
# Ver el historial de git para saber cómo llegamos a esto... # Queremos obtener un dominio válido y no permitir ningún otro
origins '*' # origen. Como los sitios pueden tener muchos orígenes, necesitamos
# una forma de encontrarlos por su URL.
#
# 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.
#
# 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
if (name = URI(source)&.host&.split('.', 2)&.first).present?
Site.where(name: name).pluck(:name).first.present?
else
false
end
rescue URI::Error
false
end
end
resource '*', headers: :any, methods: %i[get post patch put] resource '*', headers: :any, methods: %i[get post patch put]
end end
end end