Код для забытого пароля, электронная почта не отправлена. С#
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 и т. д. -- огромные, полностью предотвратимые катастрофы, вызванные людьми, которые, вероятно, слушали своих учителей.