Esta página se está traducido el 2014-12-08.
Es posible que la versión inglés se actualizaba desde luego.

Edición de información delicada

En algunos países los requisitos locales exigen que las solicitudes contengan datos personales, tales como la dirección o el número del documento de indentidad de la persona que solicita la información. Normalmente los solicitantes no desean que esta información se muestre de forma pública.

Alaveteli tiene cierta habilidad para gestionar estos datos mediante el uso de normas de censura.

El tema que utilizaremos como ejemplo requiere el número del documento nacional de identidad y lo que se conoce como ley general en Nicaragua (fecha de nacimiento, domicilio, profesión y estado civil).

Formulario de registro con detalles adicionales

Número del documento de identidad

Empezaremos mirando el número del documento nacional de identidad. Este un buen ejemplo de un concepto cuya edición resulta sencilla. Es único para cada usuario y cuenta con un formato específico comprobable.

Para enviar el número del documento de identidad a la autoridad, sobrescribiremos la plantilla inicial de solicitud (fragmento de código recortado):

<%= raw @outgoing_message.body.strip %>

-------------------------------------------------------------------

<%= _('Requestor details') %>
<%= _('Identity Card Number') %>: <%= @user_identity_card_number %>

Ahora, al efectuar una solicitud, se añade el número del documento de identidad del usuario al pie del correo saliente.

Mensaje saliente con el número del documento de identidad

En este punto no hemos añadido ninguna norma de censura. Cuando la autoridad responde es poco probable que elimine el texto citado del correo electrónico:

Número del documento de identidad en el texto citado

Podríamos añadir una norma de censura para la solicitud individual pero, ya que cada solicitud incluirá un número de documento de identidad, es mejor añadir algo de código para que se edite automáticamente.

Para ilustrar este ejemplo, aplicaremos un parche al modelo User con una retrollamada que crea una norma de censura cuando se crea o actualiza un usuario.

# THEME_ROOT/lib/model_patches.rb
User.class_eval do
  after_save :update_censor_rules

  private

  def update_censor_rules
    censor_rules.where(:text => identity_card_number).first_or_create(
      :text => identity_card_number,
      :replacement => _('REDACTED'),
      :last_edit_editor => THEME_NAME,
      :last_edit_comment => _('Updated automatically after_save')
    )
  end
end

Puede ver la nueva norma de censura en la interfaz de administración:

Norma de censura añadida automáticamente

Ahora el número del documento de identidad se edita:

Número del documento de identidad editado automáticamente

También se edita si el organismo público utiliza el número del documento de identidad en el cuerpo del correo:

Número del documento de identidad editado en el cuerpo principal

Una norma de censura añadida a un usuario solo se aplica en la correspondencia de solicitudes creadas por dicho usuario. No se aplica a anotaciones realizadas por el usuario.

Advertencia: La edición de este tipo requiere que el texto delicado se encuentre exactamente en el mismo formato que la norma de censura. Si es mínimamente diferente, es posible que la edición falle. Si el organismo público eliminase los guiones del número, este no se editaría:

Número del documento de identidad no editado en el cuerpo principal

Advertencia: Alaveteli también intenta editar el texto de todos los adjuntos. Solo puede hacerlo si detecta la cadena de texto exacta, que no suele ser posible con formatos binarios como PDF o Word.

Alaveteli puede normalmente editar la información delicada al convertir un documento de texto o en formato PDF a HTML:

Edición de PDF a HTML

Este PDF no contiene la cadena de texto en el formato binario, así que la edición no se aplica al descargar el documento PDF original:

Descarga del PDF original

Ley general

La información de la ley general es mucho más difícil de editar automáticamente. No está tan estructurada y es poco probable que sea única (por ejemplo, domicilio: Londres).

Añadiremos la información de la ley general a la plantilla inicial de solicitud del mismo modo que el número del documento de identidad:

<%= _('Requestor details') %>:
<%-# !!!IF YOU CHANGE THE FORMAT OF THE BLOCK BELOW, ADD A NEW CENSOR RULE!!! -%>
===================================================================
# <%= _('Name') %>: <%= @user_name %>
# <%= _('Identity Card Number') %>: <%= @user_identity_card_number %>
<% @user_general_law_attributes.each do |key, value| %>
# <%= _(key.humanize) %>: <%= value %>
<% end %>
===================================================================

Ahora la información está contenida en un bloque de texto con un formato especial.

Mensaje saliente con la ley general

Así se permite que una norma de censura concuerde con el formato especial y elimine todo lo que se halle en su interior. Esta norma de censura es general, así que actuará en las coincidencias de todas las solicitudes.

 # THEME_ROOT/lib/censor_rules.rb
# If not already created, make a CensorRule that hides personal information
regexp = '={67}\s*\n(?:[^\n]*?#[^\n]*?: ?[^\n]*\n){3,10}[^\n]*={67}'

unless CensorRule.find_by_text(regexp)
  Rails.logger.info("Creating new censor rule: /#{regexp}/")
  CensorRule.create!(:text => regexp,
                     :allow_global => true,
                     :replacement => _('REDACTED'),
                     :regexp => true,
                     :last_edit_editor => THEME_NAME,
                     :last_edit_comment => 'Added automatically')
end

Dirección editada encuadrada

Advertencia: La edición de información desestructurada es una aproximación muy delicada, pues se apoya en que las autoridades siempre citen el texto completo.

En tal caso la autoridad ha revelado la fecha de nacimiento y el domicilio del usuario:

Dirección fuera del bloque con formato

Es realmente difícil añadir una norma de censura para eliminar este tipo de información. Una sugerencia puede ser eliminar todas las menciones de la fecha de nacimiento del usuario, pero debería tener en cuenta todos los tipos de formato de fecha. Probablemente podría editar todas las apariciones del domicilio del usuario, pero si se trata de una solicitud relacionada con su región, es muy probable que esta se volviera incomprensible.

Norma de censura para editar el domicilio del usuario

La edición se ha aplicado, pero no hay forma de conocer el contexto en que se utiliza una palabra delicada.

Norma de censura para editar el domicilio del usuario