Osama
16.Сентябрь.2024 20:15:39
8
Penar Musaraj, пост:6, тема:326397:
Я согласен с глобальной очисткой после определённого периода. @osama (поскольку вы автор коммита, на который ссылаются выше), как вы считаете, можно ли удалить все эти логи через какое-то время (и если да, то через сколько)? Похоже, что некоторые из них нужно сохранять для обнаружения подозрительных входов.
Да, я думаю, что мы можем удалить большинство логов, но некоторые должны остаться. В частности, я считаю, что любые записи с действиями suspicious, generate или rotate нужно сохранять, так как они используются для обнаружения подозрительных входов и формирования отчётов по ним.
title: I18n.t("reports.suspicious_logins.labels.login_time"),
},
]
report.data = []
sql = <<~SQL
SELECT u.id user_id, u.username, u.uploaded_avatar_id, t.client_ip, t.user_agent, t.created_at login_time
FROM user_auth_token_logs t
JOIN users u ON u.id = t.user_id
WHERE t.action = 'suspicious'
AND t.created_at >= :start_date
AND t.created_at <= :end_date
ORDER BY t.created_at DESC
SQL
DB
.query(sql, start_date: report.start_date, end_date: report.end_date)
.each do |row|
data = {}
Math.sin((lat2_rad - lat1_rad) / 2)**2 +
Math.cos(lat1_rad) * Math.cos(lat2_rad) * Math.sin((lon2_rad - lon1_rad) / 2)**2
c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))
c * EARTH_RADIUS_KM
end
def self.is_suspicious(user_id, user_ip)
return false unless User.find_by(id: user_id)&.staff?
ips = UserAuthTokenLog.where(user_id: user_id).pluck(:client_ip)
ips.delete_at(ips.index(user_ip) || ips.length) # delete one occurrence (current)
ips.uniq!
return false if ips.empty? # first login is never suspicious
if user_location = login_location(user_ip)
ips.none? do |ip|
if location = login_location(ip)
distance(user_location, location) < SiteSetting.max_suspicious_distance_km
end
end
3 лайка