TheresaKang93 Ответов: 3

Код для забытого пароля, электронная почта не отправлена. С#


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Net.Mail;
using System.Configuration;

public partial class ForgotPassword : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        try {
            DataSet ds = new DataSet();
            string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            using (SqlConnection con = new SqlConnection(connectionString))
            {
                con.Open();
                SqlCommand cmd = new SqlCommand("SELECT UserName, Password FROM Users Where Email='" + txtEmail.Text.Trim() + "'", con);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(ds);
                con.Close();
            }
            if (ds.Tables[0].Rows.Count>0)
            {
                MailMessage msg = new MailMessage();
                msg.From = new MailAddress(txtEmail.Text);
                msg.To.Add(txtEmail.Text);
                msg.Subject="Share It: Password Recovery";
                msg.Body="Hi, " + ds.Tables[0].Rows[0]["FirstName"] +" " + ds.Tables[0].Rows[0]["LastName"] +"<br />As requested, here is your login details<br /><br />Your Username: " + ds.Tables[0].Rows[0]["UserName"] + "<br /><br />Your Password: " + ds.Tables[0].Rows[0]["Password"] + "<br /><br />Thank you for trusting us! Hope to hear from you soon!<br /><br />";
                msg.IsBodyHtml = true;

                SmtpClient smtp = new SmtpClient("smtp.gamil.com", 587);
                smtp.UseDefaultCredentials = false;
                //smtp.Host = "smtp.gmail.com";
                //smtp.Port = 587;
                smtp.Credentials = new System.Net.NetworkCredential("theresakang93@gmail.com", "passwordremoved");
                smtp.EnableSsl = true;
                smtp.Send(msg);
                lbltxt.Text = "Your Password Details Sent to your mail.";
            }
        
            else
            
                lbltxt.Text = "The Email you entered does not exists.";
        }    
        catch (Exception ex) {
        
                Console.WriteLine("{0} Exception caught.", ex);
                lbltxt.Text = "Unable to send";
            }

Ron Beyer

"Спасибо, что доверяете нам", Мне нравится, что, несмотря на то, что вы храните пароли в открытом тексте в своей базе данных, они подвержены атакам SQL-инъекций, что позволяет легко украсть все пароли и электронные письма ваших пользователей и разместить пароль в своей учетной записи электронной почты...

TheresaKang93

Я понимаю. Но я всего лишь студент, пытающийся сделать образец кодирования для моего домашнего задания.

Ron Beyer

Я почти уверен, что ваш адрес "от" должен совпадать с именем пользователя вашей учетной записи gmail, иначе он называется ретрансляцией, и я почти уверен, что GMail этого не позволяет.

Sergey Alexandrovich Kryukov

Ну, это только делает его еще более важным, чтобы избежать делать плохие вещи, когда вы только учитесь. Я выложу несколько ссылок, чтобы помочь вам...
—СА

Sergey Alexandrovich Kryukov

Но тогда это только более важно, чтобы избежать делать плохие вещи, когда вы только учитесь. Я добавил ответ с некоторыми ссылками, чтобы помочь вам. Пожалуйста, не стесняйтесь комментировать его и задавать некоторые последующие вопросы, если они у вас есть.
—СА

Sergey Alexandrovich Kryukov

Правильный. Это большое "нет-нет". Пароли никогда не должны храниться. Обычно криптографическое хэш-значение сохраняется и хэш сравнивается с хэшем, исходный пароль никогда не требуется для аутентификации (может быть сюрпризом для OP: -) и никогда не восстанавливается; вместо этого, если кто-то забывает свой пароль, следует создать совершенно новый пароль.
—СА

TheresaKang93

Я знаю, что пароль не должен храниться. Но я все еще новичок, и мой учитель попросил нас сохранить его в базе данных, а затем сделать забытый пароль

Sergey Alexandrovich Kryukov

Другими словами, ваш учитель попросил вас сделать что-то неправильное. Очень милый. Вы уверены, что посещать вашу школу имеет смысл? :-)
—СА

Yvan Rodrigues

Попросите вашего учителя связаться с любым из нас, и мы будем рады дать вам некоторые рекомендации. Как вы, наверное, догадались, те из нас, кто выбрал эту профессию, относятся к ней очень серьезно. К сожалению, именно "профессионалы" несут ответственность за такие катастрофы, как Adobe, Target и т. д. -- огромные, полностью предотвратимые катастрофы, вызванные людьми, которые, вероятно, слушали своих учителей.

3 Ответов

Рейтинг:
9

Sergey Alexandrovich Kryukov

Пожалуйста, смотрите комментарии к вопросам, Рона и мои.

Пожалуйста, смотрите мои прошлые ответы для получения более подробной информации:
я уже зашифровал свой пароль, но когда я вхожу в систему, он выдает мне ошибку. как его расшифровать[^],
Расшифровка зашифрованного пароля[^],
хранение паролей int значение SQL-сервера в защищенном режиме[^].

—СА


Ron Beyer

+5!

Sergey Alexandrovich Kryukov

- Спасибо, Рон. Я надеюсь, что вы видели ответ другого опа, то же самое снова: "но я все еще новичок, и мой учитель попросил нас об этом..." Это такая патология...
—СА

Ron Beyer

Одни стремятся пройти, другие-преуспеть.

Sergey Alexandrovich Kryukov

..а некоторые стремятся потерпеть неудачу :-)
—СА

Рейтинг:
16

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

См. Мой ответ - отправка электронной почты в gmail из asp.net[^].
Это работает довольно хорошо. Проверенный.

Если вы получаете какие-либо Exception- пожалуйста , ответь мне на это. Я, помочь.


Ron Beyer

Получил свой 5, почти уверен, что проблема здесь в адресе "от".

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Большое спасибо Рон Бейер... :)

TheresaKang93

Большое вам спасибо! :)

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Добро пожаловать, приятель. :)

Рейтинг:
1

Christian Graus

Увидев этот код, я бы никогда не воспользовался вашим сайтом из-за всех дыр в системе безопасности.

Но, если письмо не отправлено, то ваш почтовый сервер настроен неправильно, а это не большой скачок от того, насколько плох этот код.

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