1. ホーム
  2. Web プログラミング
  3. セキュリティ関連

SQLインジェクション(SQL Injection)の攻撃方法を学ぶ

2022-01-05 01:26:11
これは、見境のない学生に機会を与え、いくつかの奇妙なクエリー文字列を入力し、特定のSQL文にスプライシングすることによって、インジェクションの目的を達成することができることを利用することができます。データベースから重要な情報を得ることができるだけでなく、パーミッションを適切に設定しなければ、テーブルを丸ごと削除することさえできてしまうのです。ですから、SQLインジェクションの脆弱性は、やはりかなり深刻なのです。私もWebサイトの書き方を覚えた当初は、SQL文のスプライシングに頼って食いつないでいたことがありました......。

SQLインジェクションの仕組みをよりよく理解するために、次のようなインターフェイスのサンプルWebページを作成しました。

click to loginブロックのコードは以下の通りです。5行目にスプライスされたSQLステートメントを使用していることに注意してください。
コピーコード コードは以下の通りです。

private void Login()
{
string uname = tbName.Text;
string pwd = tbPassword.Text;
string sqlCmd = "select * from [Users] where UserName = '" + uname + "'";
string sqlCmdRep = sqlCmd.Replace("Users", "XXX").Replace("UserName", "XXX");
lbSQL.Text = sqlCmdRep;
try


DataTable dt = DataSQLServer.GetDataTable(sqlCmd);
gvResult.DataSource = dt;
gvResult.DataBind();
If (dt.Rows.Count == 1 && pwd == dt.Rows[0]["Password"].ToString())
{
lbRes.Text = dt.Rows[0]["UserName"] + " Login Success!";
}
else if(dt.Rows.Count == 0)
{
lbRes.Text = uname + " not exist!";
}
else
{
lbRes.Text = "Login Fail!";
}
}
catch (Exception ex)
{
lbRes.Text = "Error: " + ex.Message;
}
}

1 2 3 次のページ もっと読む