私はC#プログラミングの全く新しい学生です。私は現在MVCを使ってミニセキュリティプロジェクトを行っています。プロジェクト: ユーザーにはアカウントを含むcsvファイルをアップロードできますが、パスワードはハッシュと塩ではありません。 (完了) 次に、ファイルをvirustotalに送信し、サーバーに保存する前にスキャンします(完了) 保存後、データをcsvファイルに挿入し、パスワードをデータベースにハッシュして暗号化する必要があります。 (助けが必要)csvからパスワードをハッシュして塩に追加する方法C#
マイコントローラー
public ActionResult Upload(HttpPostedFileBase file)
{
if (System.IO.Path.GetExtension(file.FileName).Equals(".csv"))
{
//{0} = Y, {1} = M, {2} = D, {3} = H, {4} = min, {5} = Sec
string datetime = string.Format("{0}{1}{2}-{3}{4}{5}", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
string fileName = string.Format("{0}_{1}.csv", file.FileName.Substring(0, (file.FileName.Length - 4)), datetime);
var fileStream = new System.IO.MemoryStream();
file.InputStream.CopyTo(fileStream);
var vtObj = new VirusTotal("%API KEY%");
vtObj.UseTLS = true;
try
{
var fileResults = vtObj.ScanFile(fileStream, fileName);
var report = vtObj.GetFileReport(fileResults.ScanId);
int resPos = report.Positives;
if (resPos == 0)
{
string savePath = Server.MapPath("~/CSV/" + fileName);
file.SaveAs(savePath);
try
{
//removing the first row
insertDB(fileName, savePath);
ViewBag.error = "Updated successfully";
return View();
}
catch (Exception ex)
{
ViewBag.error = "Unable to update DB" + ex;
return View("Index");
}
}
else
{
ViewBag.error = "Unable to upload";
return View("Index");
}
}
catch (Exception ex)
{
ViewBag.error = string.Format("Unable to upload | One min only can upload 4 times | {0} | {1}", ex, fileName);
return View("Index");
}
}
else
{
ViewBag.error = "Unable to upload";
return View("Index");
}
}
public void insertDB(string fileName, string savePath)
{
using (DB01Entities dbc = new DB01Entities())
{
string sql = string.Format(@"CREATE TABLE [dbo].[TempImport]
(
Name varchar(255),
Password VARBINARY(50)
)
bulk insert [dbo].[TempImport] from '%MyPATH%\CSV\{0}' with (ROWTERMINATOR = '\n')
INSERT INTO dbo.Employee
(
Name
Password
)
SELECT name
FROM dbo.TempImport
DROP TABLE dbo.TempImport", fileName);
dbc.Database.ExecuteSqlCommand(sql);
dbc.SaveChanges();
}
}
}
}
マイ指数
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="File" id="file" accept=".csv"/>
<input type="submit" value="Upload" />
<div class="error">@ViewBag.error</div>
}
アップロード
@{
ViewBag.Title = "Upload";
}
<div class="success">@ViewBag.error</div>
<a href="/Home/Index">Back to Index>></a>
このソリューションは良いですが、安全な方法である 'Crypto.HashPassword'を使用しています。それはハッシュの反復を含む。 – zaph
こんにちは、私は文字列を[パスワード= hashedPassword]でバイト[]に変換できません –