mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-22 10:46:22 +00:00
fix: valida que no se puedan ingresar links en título y descripción #17494
This commit is contained in:
parent
11e2353c2f
commit
ccba54d5a7
3 changed files with 30 additions and 0 deletions
|
@ -14,6 +14,16 @@ class Site < ApplicationRecord
|
|||
include Site::DefaultOptions
|
||||
include Tienda
|
||||
|
||||
# Valida un nombre de dominio:
|
||||
#
|
||||
# * Quizás empieza con xn--
|
||||
# * Empieza con caracteres alfanuméricos o guión bajo
|
||||
# * Contiene caracteres alfanuméricos y guiones medios
|
||||
# * Puede tener hasta 63 caracteres
|
||||
# * Cada parte termina con un punto
|
||||
# * Termina sin punto
|
||||
POSSIBLE_HOSTNAME = %r{((xn--)?[a-z0-9_][a-z0-9\-]{0,61}[a-z0-9]{0,1}\.){1,}(xn--)?[a-z0-9][a-z0-9\-_]{0,61}[a-z0-9]{0,1}}.freeze
|
||||
|
||||
self.filter_attributes += [/_key/, /_ciphertext\z/]
|
||||
|
||||
# Cifrar la llave privada que cifra y decifra campos ocultos. Sutty
|
||||
|
@ -32,6 +42,7 @@ class Site < ApplicationRecord
|
|||
validates :description, length: { in: 10..160 }
|
||||
validate :deploy_local_presence
|
||||
validate :compatible_layouts, on: :update
|
||||
validate :prevent_autolinking
|
||||
|
||||
attr_reader :incompatible_layouts
|
||||
|
||||
|
@ -627,4 +638,15 @@ class Site < ApplicationRecord
|
|||
compare < ::File.mtime(gemfile_lock_path)
|
||||
end
|
||||
end
|
||||
|
||||
# Valida que el contenido de los campos de texto no contenga nombres
|
||||
# de dominio, para evitar que al enviarlor por correo se generen
|
||||
# autolinks maliciosos.
|
||||
def prevent_autolinking
|
||||
%i[title description].each do |attr|
|
||||
next unless POSSIBLE_HOSTNAME.match?(public_send(attr))
|
||||
|
||||
errors.add(attr, I18n.t("activerecord.errors.models.site.attributes.#{attr}.possible_hostname"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -384,6 +384,10 @@ en:
|
|||
models:
|
||||
site:
|
||||
attributes:
|
||||
description:
|
||||
possible_hostname: "possibly contains a malicious link."
|
||||
title:
|
||||
possible_hostname: "possibly contains a malicious link."
|
||||
deploys:
|
||||
deploy_local_presence: 'We need to be build the site!'
|
||||
design_id:
|
||||
|
|
|
@ -383,6 +383,10 @@ es:
|
|||
models:
|
||||
site:
|
||||
attributes:
|
||||
description:
|
||||
possible_hostname: "es posible que contenga un vínculo malicioso."
|
||||
title:
|
||||
possible_hostname: "es posible que contenga un vínculo malicioso."
|
||||
deploys:
|
||||
deploy_local_presence: '¡Necesitamos poder generar el sitio!'
|
||||
design_id:
|
||||
|
|
Loading…
Reference in a new issue