Я попытался создать удаленную базу данных MySQL и связать ее с приложением WPF. Мне это удается, но я был предупрежден пользователями из форума, чтобы хэш-пароль, потому что его можно легко вводить SQL. Мой вопрос кто-нибудь знает, как я могу создать хэш пароля на основе этого кода:Хеширование пароля в приложении WPF C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace ECBSRecruitmentAgencySoftware
{
public partial class LogIn : Form
{
public LogIn()
{
InitializeComponent();
}
public bool tryLogin(string username , string password)
{
MySqlConnection con = new MySqlConnection("host=aaaaaaaa.baaadsg;user=saaaaaak;password=2333333336;database=soaaaaaaaa2;");
MySqlCommand cmd = new MySqlCommand("Select * FROM niki WHERE user_name = `" + username + "` AND user_password = `" + password + "`;");
cmd.Connection = con;
con.Open();
MySqlDataReader reader = cmd.ExecuteReader();
if (reader.Read() != false)
{
if (reader.IsDBNull(0) == true)
{
cmd.Connection.Close();
reader.Dispose();
cmd.Dispose();
return false;
}
else
{
cmd.Connection.Close();
reader.Dispose();
cmd.Dispose();
return true;
}
}
else
{
return false;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (tryLogin(user.Text, pass.Text) == true)
{
MainScreen F2 = new MainScreen();
F2.Show();
this.Hide();
}
else
MessageBox.Show("Wrong details!");
}
}
}
Вы не должны построить вашу команду SQL с помощью concatinating строки, параметры использования вместо этого. Вы можете использовать класс SHA1CryptoServiceProvider для создания хешированных значений. – Mithrandir
Также используйте команду «using» для одноразовых экземпляров (например: MySQLConnection, MySQLCommand) для безопасного кода. –
Вы должны использовать параметризованный запрос, чтобы убедиться, что вы не уязвимы для SQL-инъекции. Вы должны использовать все свои пароли, чтобы кто-нибудь когда-либо обращался к вашей базе данных (даже администратору сайта, то есть вам) по какой-либо причине, они будут видеть только бессмысленные хэши, а не фактические пароли открытого текста. Это две очень четкие меры безопасности, которые защищают от различных проблем. Вы должны реализовать оба из них. – Servy