Je crée une application Web ASP.Net MVC 5
dont le service peut être utilisé par des utilisateurs anonymes. Lorsque l'utilisateur anonyme utilise le service Web, il va faire une requête à partir de la base de données. Pour des raisons de sécurité, cependant, mon client souhaite suivre les activités «suspectes» des utilisateurs anonymes. L'un d'entre eux comprend combien de fois un utilisateur anonyme interroge par jour (pour éviter qu'une quantité importante de données ne soit «volée»).Comment faire le suivi des activités des utilisateurs anonymes dans ASP.Net MVC 5?
Y at-il un moyen de capturer cette information?
pour les utilisateurs enregistrés, nous pourrions créer des biens supplémentaires dans le ApplicationUser
appelé QueryNo
et l'ajouter dans le Claim
comme ceci:
public class ApplicationUser : IdentityUser {
public uint QueryNo { get; set; } //how many times this user has queried
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) {
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
userIdentity.AddClaim(new Claim("QueryNo", QueryNo));
return userIdentity;
}
}
Et quand nous voulons suivre son activité, nous pourrions tout simplement augmenter sa QueryNo
par activité de requête. Lorsque nous voulons l'afficher, on pourrait, par exemple, définir simplement une extension pour Identity
comme ceci:
public static class IdentityExtensions {
public static string GetQueryNo(this IIdentity identity) {
if (identity == null) {
throw new ArgumentNullException("identity");
}
var ci = identity as ClaimsIdentity;
if (ci != null) {
return ci.FindFirstValue("QueryNo");
}
return null;
}
}
Et puis il suffit d'utiliser dans la vue comme ceci:
<p>No Of Query: @User.Identity.GetQueryNo()</p>
Mais comment nous suivons les activités de l'utilisateur anonyme (c'est-à-dire son nombre de requêtes)?
Je ne pense pas que vous puissiez avoir une solution totalement pare-balles. Vous pouvez suivre via la session de l'utilisateur - ce que quelqu'un malveillant pourrait contourner simplement en désactivant les cookies. Si vous êtes d'accord avec cela, je pense qu'un filtre d'action qui permet de suivre quelles actions sont consommées avec des paramètres particuliers pourrait être votre meilleur pari. Vous pouvez capturer des choses comme l'ID de session, l'adresse IP, les détails du navigateur, etc ... bien que tout cela pourrait être suspect. –
Désactiver les cookies serait gênant, certainement. :/mais supposons que la plupart des utilisateurs ne se soucient pas d'élaborer/donner un exemple de votre suggestion, "je pense qu'un filtre d'action qui suit quelles actions sont consommées avec des paramètres particuliers pourrait être votre meilleur pari. capturer des choses comme l'ID de session, adresse IP, les détails du navigateur, etc ... bien que tous ceux qui pourraient être suspects "? – Ian