Accueil > Forum > > > > Newbie en C#, léger problème de sécurité avec VS2008.Net
Newbie en C#, léger problème de sécurité avec VS2008.Net
vendredi 27 juin 2008 à 16:32:15 |
Newbie en C#, léger problème de sécurité avec VS2008.Net

Nixeus
|
Bonjour à tous, Je suis débutant dans le monde .Net, et je viens de faire un petit programme en console, permettant d'envoyer des Mails par le biais d'smtp ! Mon programme fonctionne, mais disons que j'ai juste du "salir" un peu mon code, car sinon Visual Studio ne voulait pas le compiler ! trop de sécurité tue le code! Je vous explique : Je créer une variable AdrDest, de type STRING. Cette variable sera passé en paramètre comme ceci : MailAddress AdressDest = newMailAddress(AdrDest);
Au début de mon programme je déclare ma varibale comme ceci : String AdrDest; Le problème est que le programme me sort une erreur de compilation me disant que ma variable AdrDest ne peux pas être vide si elle est utilisée avec MailAdress ! En gros il veux dire qu'une adresse mail ne peux pas être vide ! Ca tombe sous le sens biensur ! Le problème c'est qu'il me dit ca avant que j'ai éxécuté mon programme, et ca....c'est pas cool ! Pour palier à ce problème, j'ai initialisé ma variable AdrDest à bidon@bidon.fr et tout passe. Seulement c'est crade, je voudrais savoir si il n'y a pas un moyen en .Net de faire ca plus propre ! Merci les Amis ! je vous laise mon code si vous voulez zieuter ! [code] using System;using System.Net.Mail;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ classProgram{ staticvoid Main(string[] args){ // Variablesstring Pseudo = "", AdrExp = "Bidon@Bidon.fr", AdrDest = "Bidon@Bidon.fr", CC = "Bidon@Bidon.fr", CCI = "Bidon@Bidon.fr", Sujet = "", Msg = "", Path = "FichierBidon";// Construction du messageSystem. Console.ReadLine();// R,cup¦re les arguments pass,sint nBParam = 0;nBParam = args.Length; int i = 0;if (nBParam > 0){ for (i = 0; i < nBParam-1; i++)// Parcour des arguments pass,s et stockage en variable{ switch (args [i]){ case"-P" :Pseudo=args[i + 1]; break;case"-E" :AdrExp = args[i + 1]; break;case"-D" :AdrDest = args[i + 1]; break;case"-C" :CC = args[i + 1]; break;case"-H" :CCI = args[i + 1]; break;case"-S" :Sujet = args[i + 1]; break;case"-M":Msg = args[i + 1]; break;case"-F":Path = args[i + 1]; break;} } } if (nBParam < 3){ System. Console.WriteLine("Vous devez passer en minimum les parametres : -E, ,-D ,-M ");System. Console.WriteLine("");System. Console.WriteLine("Rappel des parametres :");System. Console.WriteLine("");System. Console.WriteLine("-P Pseudo de l'expediteur");System. Console.WriteLine("-E Email de l'expediteur ");System. Console.WriteLine("-D Email de mon destinataire");System. Console.WriteLine("-C Email de mon destinataire en copie");System. Console.WriteLine("-H Email de mon destinataire en copie cachee");System. Console.WriteLine("-S Mon sujet !! ");System. Console.WriteLine("-M Mon message !!");System. Console.WriteLine("-F Chemin d'acces vers fichier a joindre");System. Console.ReadLine();} else{ MailMessage mail = newMailMessage();MailAddress AdressCopy = newMailAddress(CC);MailAddress AdressCopyHiding = newMailAddress(CCI);MailAddress AdressDest = newMailAddress(AdrDest);MailAddress AdressExp = newMailAddress(AdrExp,Pseudo);Attachment Data = newAttachment(Path);mail.From = AdressExp; mail.To.Add(AdressDest); if (CC != "Bidon@Bidon.fr"){ mail.CC.Add(AdressCopy); } if (CCI != "Bidon@Bidon.fr"){ mail.Bcc.Add(AdressCopyHiding); } if (Path != "FichierBidon"){ mail.Attachments.Add(Data); } mail.Subject = Sujet; mail.Body = Msg; mail.SubjectEncoding = Encoding.GetEncoding("iso-8859-1");mail.BodyEncoding = Encoding.GetEncoding("iso-8859-1"); SmtpClient smtp = newSmtpClient();smtp.Host = "smtp.xxxxxxxx.com";smtp.Port = 25; // default.smtp.Credentials = new System.Net.NetworkCredential("", "");try{ smtp.Send(mail); mail.Dispose(); } catch (Exception ex){ System. Console.WriteLine(ex);} } } } } [/code] Merci à tous les amis ! Bonne après midi ! Nixeus'
|
|
vendredi 27 juin 2008 à 23:22:56 |
Re : Newbie en C#, léger problème de sécurité avec VS2008.Net

Nikoui
|
Voila d'où vient ton problème : Tu initialises ta variable AdrDest avec la valeur qui va bien, dans ton switch - ce qui semble donc correct. Si le compilo n'est pas content, c'est qu'il a une bonne raison de le faire : ton code tel qu'il est fait ne permet pas d'assurer que la variable AdrDest aura forcément une valeur valide lorsque tu arrives à la ligne MailAddress AdressDest = newMailAddress(AdrDest);Avec les informations dont il dispose (ton code) le compilateur n'a aucun moyen d'être sur que tout les chemins d'execution possible donneront une valeur à AdrDest (et en l'occurence, il a raison, voir plus bas). La solution est donc d'initialiser ta variable avec une valeur (ce que tu as fait). Ce n'est pas crade, c'est "safe". (par exemple, il suffit de lancer ton code avec les paramètres "-P toto -P toto -P toto" pour laisser AdrDest à null, ou bien "-P -P -P" pour le planter...)
Working as designed www.nikoui.fr
|
|
samedi 28 juin 2008 à 11:52:10 |
Re : Newbie en C#, léger problème de sécurité avec VS2008.Net

Nixeus
|
Hey mon ami !
Merci de ta réponse ! J'avoue que je m'attendais à ca, mais je pensais qu'il y avait moyen de désactivé cette sécurité dans VS 2008 !
Ils auraient pu mettre un warning ! Je trouve que ca fais un peu assistanat du code !! :) On est censé connaitre les règles de programmation :)
Anfin merci de ta réponse ! :)
Nixeus'
|
|
samedi 28 juin 2008 à 22:52:57 |
Re : Newbie en C#, léger problème de sécurité avec VS2008.Net

coq
|
Salut, Un warning n'aurait pas de sens, c'est une erreur. "J'avoue que je m'attendais à ca, mais je pensais qu'il y avait moyen de désactivé cette sécurité dans VS 2008 !" Je pense que la plupart des utilisateurs de C# appeleraient ça une regression :-D "On est censé connaitre les règles de programmation :)" Oui, censés... Nos utilisateurs sont censés savoir utiliser nos applis, et pourtant... Au pire tu as VB.NET qui te permettra de faire ce genre de chose sans raler (par contre le jour où c'est réellement génant pour le fonctionnement, c'est aussi silencieux). /* coq MVP Visual C# CoqBlog*/
|
|
Cette discussion est classée dans : mail, system, console, writeline, bidon
Répondre à ce message
Sujets en rapport avec ce message
Performances / CIL [ par MorpionMx ]
Bonjour a tous, J'ai envie de commencer la journée par une question de performance.Soit un programme minimaliste qui crée un entier i et qui l'affiche
déclarer un type word en c# [ par sheebe ]
Bonjour, je programme en ce moment en c# une carte à relais permettant d'actionner un gachette de porte pour mon projet de bts voici mon code:using S
Problème multithread [ par froggyinfo ]
Bonsoir,Voila j'ai un problème avec un programme multi-thread,J'ai raccourci un peu le code est remplacé les fonctions par des recup1 à 4.Le but du pr
WindowsForm et la console ? [ par vash_vador ]
Bonjour, Je suis nouveau dans le développements en c# (environ 6mois de pratique), et j'ai un projet mais j'ai un petit problème a résoudre: Mon probl
2ém probléme d'execution [ par sghchafaa ]
Sélém Alikom((signifie "Bonjour" en tunisien); voila c'est simple fonction qui cherche le careé ,mais sa marche pas!!!!!!!public class hello{ int
Comment utiliser la commande EXIT en C# [ par sghchafaa ]
Bonjour;s'il vous plait,pouvez vous m'aider concernat la commande EXIT en C#;;je suis entrain de manipuler l'ecriture dans un fichier externe,,je veut
Identification d'un client sur une appli client serveur en C# [ par dadew37 ]
Bonjour tout le monde !Je suis débutant en C#, et pourtant l'entreprise ou je suis me demande de développer une appli en C# qui gère du client serveur
Parametrer le nembre des entier parés la virgule [ par sghchafaa ]
Sélém Alikom((signifie "Bonjour" en tunisien);j'ai pas pu faire un arrandissement de 3 entier parés la virgule, en effe,j'ai fait un tot petit program
SerialPort et SerialDataReceivedEventHandler [ par sebastienth ]
Bonjour à toutes et à tous, Électronicien de formation et débutant en C#, j'aurai aimé réaliser comme première application une communication de type
envoyer un e-mail [ par morisaab ]
Bonjour:J'ai écrit le programme suivant afin d'envoyer un e-mail:using System;using System.Windows.Forms;using System.Net.Mail; public class sendmai
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
Comparez les prix

HTC Magic
Entre 429€ et 429€
|