Миллионы анонимных профилей ASP.Net? - PullRequest
6 голосов
/ 04 мая 2010

ОБНОВЛЕНИЕ: Я только что понял, что мы используем Google Mini Search для сканирования сайта, чтобы мы могли поддерживать поиск Google. Это обязательно создаст анонимный профиль не только для каждого сканирования, но, возможно, даже для каждой страницы - это будет возможно?

Привет всем, нужен совет!

Наш веб-сайт получает около 50 000 посещений в день, и мы используем анонимные профили / пользователи членства ASP.Net, в результате чего миллионы (в настоящее время 4,5 млн.) «Активных» профилей и база данных «сканируют», у нас есть ночная задача, которая очищает все неактивные.

Нет никакого способа, чтобы у нас было 4,5 миллиона уникальных посетителей (население нашего округа составляет всего 1/2 миллиона), может ли это быть вызвано гусеницами и пауками?

Кроме того, если нам приходится мириться с этим огромным количеством профилей, есть ли способ оптимизации БД?

Спасибо

Кев

Ответы [ 2 ]

2 голосов
/ 04 мая 2010

Обновить следующий разговор:

Могу ли я предложить вам внедрить фильтр, который может идентифицировать сканеры по заголовкам запросов и регистрировать анон-куки, которые вы можете позже в тот же день. расшифруйте и удалите записи anon aspnet_profile и aspnet_users с соответствующим идентификатором пользователя.

Возможно, вы сражаетесь в проигранной битве, но по крайней мере вы получите четкое представление о том, откуда весь трафик.


Файлы cookie AnonymousId и, по доверенности, анонимные профили действительны в течение 90 дней после последнего использования. Это может привести к скоплению аноновых профилей.

Очень простой способ справиться с этим - использовать ProfileManager.

ProfileManager.DeleteInactiveProfiles(ProfileAuthenticationOption.Anonymous, DateTime.Now.AddDays(-7));

удалит все анонимные профили, к которым не обращались в течение последних 7 дней.

Но это оставляет вас с анонимными записями в aspnet_Users. Membership не предоставляет метод, аналогичный ProfileManager, для удаления устаревших анонимных пользователей.

Итак ...

Лучшая ставка - это сырая sql-атака, удаление из aspnet_Profile, где вы считаете их устаревшими, а затем выполнить тот же запрос в aspnet_User, где IsAnonymous = 1.

Удачи с этим. Как только вы очистите его, просто оставайтесь на нем.


Обновленное обновление:

Приведенный ниже код действителен только для IIS7 И если вы направляете все запросы через ASP.Net

Вы могли бы реализовать модуль, который следит за запросами к robots.txt, получить файл cookie с анонимным идентификатором и сохранить его в таблице роботов, которую вы можете использовать для безопасной очистки ваших таблиц членства / профиля профиля робота-мета. каждую ночь. Это может помочь.

Пример:

using System;
using System.Diagnostics;
using System.Web;

namespace NoDomoArigatoMisterRoboto
{
    public class RobotLoggerModule : IHttpModule
    {
        #region IHttpModule Members

        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += PreSendRequestHeaders;
        }

        public void Dispose()
        {
            //noop
        }

        #endregion

        private static void PreSendRequestHeaders(object sender, EventArgs e)
        {
            HttpRequest request = ((HttpApplication)sender).Request;



            bool isRobot = 
                request.Url.GetLeftPart(UriPartial.Path).EndsWith("robots.txt", StringComparison.InvariantCultureIgnoreCase);

            string anonymousId = request.AnonymousID;

            if (anonymousId != null && isRobot)
            {
                // log this id for pruning later
                Trace.WriteLine(string.Format("{0} is a robot.", anonymousId));
            }
        }
    }
}

Ссылка: http://www.codeproject.com/Articles/39026/Exploring-Web-config-system-web-httpModules.aspx


1 голос
/ 04 мая 2010

Вы можете попробовать удалить анонимные профили в событии Session_End в вашем файле Global.asax.cs.

Существует вероятность того, что ваш сайт сканируется либо законным поисковым роботом, либо / или нелегальным сканером, который ищет уязвимости, которые позволят хакерам получить контроль над вашим сайтом / сервером. Вы должны изучить это независимо от того, какое решение вы используете для удаления старых профилей.

Если вы используете поставщика профилей по умолчанию, который хранит всю информацию профиля в одном столбце, вы можете прочитать эту ссылку , которая относится к статье Скотта Гатри о более эффективной работе на основе таблиц профиль провайдера.

...