2010-01-03 15 views
1

Je travaille sur un site web et c'est mon premier projet web.Etat de session. Comment gérer une session avec le mode personnalisé?

Scénario pour la session

J'ai créé une base de données pour mon projet avec le niveau de sécurité peu élevé. Je veux gérer la session pour chaque utilisateur qui se connecte à mon site Web. L'état de la session peut être utilisé en utilisant Cookie ainsi que l'URL, seulement un à la fois.

Maintenant, je suis allé avec les quatre modes d'état de session. i.e. 1. 2. InProc l'état du serveur 3. Sql Server 4. personnalisée

Maintenant, après avoir examiné de tous ces modes, je suis dans la confusion qui dois-je utiliser Sql Server ou sur mesure.

Fondamentalement, je veux stocker des informations liées à la session dans ma propre base de données au lieu de Aspnet_db qui est une base de données par défaut fournie par Microsoft. J'ai créé toutes les tables liées à la connexion et à l'enregistrement. Mais je ne sais pas comment stocker la session dans ma base de données. Quels tableaux dois-je créer pour maintenir dans la base de données.

Je souhaite créer un journal complet des informations de session et de connexion dans ma base de données (Persistant atleast pour 1 an). Je souhaite utiliser la clé machine comme AES et SHA1.

<sessionState mode="Custom" cookieless="AutoDetect" timeout="15" regenerateExpiredSessionId="true" stateNetworkTimeout="10" > 
    </sessionState> 
    <machineKey decryption="AES" 
       validation="SHA1" 
       decryptionKey="7E047D50A7E430181CCAF7E0D1771330D15D8A58AEDB8A1158F97EEF59BEB45D" 
       validationKey="68B439A210151231F3DBB3F3985E220CFEFC0662196B301B84105807E3AD27B6475DFC8BB546EC69421F38C1204ACFF7914188B5003C1DCF3E903E01A03C8578"/> 

<add name="conString" connectionString="Data Source=192.168.1.5; Initial Catalog=dbName; Integrated Security=True;" providerName="System.Data.SqlClient" /> 

Que dois-je spécifier dans webconfig?

Mes données Source = 192.168.1.5 Nom de la base = db.mdf

Ce que je dois savoir sur

  1. Quels tableaux dois-je ajouter à ma base de données pour stocker la session informations connexes. par exemple. ID de session (Tout autre champ est également stocké ou non), Heure de la session, heure de début de la session, Fin de la session, expiration de la session Heure. Je ne sais pas ce que toutes les choses sont habituellement prises.
  2. Ai-je besoin de chiffrer l'ID de session avant de le stocker dans la base de données. Si oui

Le cryptage sera automatique ou dois-je écrire du code pour le faire autre que celui que j'ai écrit dans la configuration web ci-dessus.

  1. Comment mode = 'custom' sera utilisé dans web config en utilisant ma base de données.

dans le code suivant

<sessionState mode="Custom" cookieless="AutoDetect" timeout="15" regenerateExpiredSessionId="true" stateNetworkTimeout="10" > 
</sessionState> 
+0

Utilisez ceci: '' –

Répondre

2

Si vous utilisez le fournisseur de session SQL Server, vous devez exécuter aspnet_regsql pour créer les tables dont vous avez besoin: (. Remplacez localhost par \ SQLEXPRESS si vous utilisez SQL Express)

aspnet_regsql –E -S localhost –ssadd –sstype p 

Vous pouvez également spécifier un nom de base de données personnalisé avec l'indicateur -d si vous ne souhaitez pas que la commande crée la base de données aspnetdb. Vous pouvez également exécuter la commande sans indicateurs pour utiliser le mode Assistant.

Si vous voulez construire un fournisseur de session personnalisé (pas une petite tâche), vous pouvez commencer par regarder le script qui est exécuté par la commande ci-dessus:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallPersistSqlState.sql 

Bien que cela dépend de vos besoins, en général le cryptage de l'état de la session n'ajoute pas beaucoup de valeur. Cependant, si vos données sont particulièrement sensibles, cela peut valoir la peine d'être pris en compte. Notez cependant que le plus gros risque avec l'état de session n'est normalement pas du côté de la DB, mais plutôt du côté du client, un utilisateur étant capable de dérober une session à un autre utilisateur en accédant à son cookie de session. Pour cette raison, avant d'avoir recours au cryptage côté DB, j'utiliserais au moins SSL pour toutes les pages qui référencent le cookie de session. Dans le cas où cela peut aider, je couvre de nombreux aspects de l'état de la session de personnalisation dans mon livre, bien que je ne m'arrête pas de démontrer un fournisseur personnalisé complet: Ultra-Fast ASP.NET.

0

Question set 1:

  1. dépend de comment vous mettre en œuvre votre fournisseur. MSDN vous dira comment faire cela.
  2. Je dirais que non, mais je ne suis pas un expert en sécurité.

Set 2:

  1. Que voulez-vous dire?