我刚刚开始了解 Rails 安全性,我想知道如何在允许用户将 CSV 文件上传到我们的数据库中的同时避免安全问题。我们正在使用 Postgres 的“从标准输入复制”功能将数据从 CSV 上传到临时表中,然后将其用于 upserts 到另一个表中。这是基本代码(感谢这篇文章):
conn = ActiveRecord::Base.connection_pool.checkout
raw = conn.raw_connection
raw.exec("COPY temp_table (col1, col2) FROM STDIN DELIMITER '|'")
# read column values from the CSV line by line in the following format:
# attributes = {column_1: 'column 1 data', column_2: 'column 2 data'}
# line = "#{attributes.values.join('|')}\n"
rc.put_copy_data line
# wrap up copy process & insert into & update primary table
我想知道我可以或应该做些什么来清理列值。我们使用的是 Rails 3.2 和 Postgres 9.2。