• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Vấn đề về form login???

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Moderators: tungblt, vuathongtin

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Vấn đề về form login???

Postby thuyan1990 » Tue 26/01/2010 10:12 pm

Hiện mình đang có 1 cái code cho nút đăng nhập như thế này. Nhưng có mình có hỏi 1 người (cũng trên diễn đàn này) anh ta nói mình là sai (mặc dù code ở dưới chạy rất tốt) ở cái này ExecuteScalar nhưng hỏi tại sao sai thì không trả lời.
  1. Private Sub ntDangNhap_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ntDangNhap.Click
  2.         ketnoidulieu()
  3.             If conn.State = ConnectionState.Closed Then conn.Open()
  4.             Dim taikhoan, matkhau As String
  5.             taikhoan = txtTaiKhoan.Text
  6.             matkhau = txtMatKhau.Text.Trim()
  7.             truyvan = "SELECT COUNT(*) FROM Users  WHERE UsrName='" & taikhoan & "'AND UsrPass='" & matkhau & "'"
  8.             cmd = New OleDb.OleDbCommand(truyvan, conn)
  9.             If cmd.ExecuteScalar <> 0 Then
  10.                 frmChinh.Show()
  11.                 Me.Close()
  12. end if
  13.     End Sub


Các bạn cho hỏi tai sao sai ở chổ đó dùm. Với cái code trên giờ mình muốn lấy ra 1 giá trị từ cái câu truy vấn trên chẳng hạn như:
Mình sẽ tạo 1 cái TEXTBOX tên là txtTenDangNhap thì khi mình đang nhập thành công thì cái TEXTBOX txtTenDangNhap nó sẽ cho ra 1 cái Tên đăng nhập tương ứng. Mong các bạn giúp dùm thanks!
Last edited by thuyan1990 on Tue 26/01/2010 10:29 pm, edited 1 time in total.



neverland87
Guru
Guru
Posts: 490
Joined: Sat 26/05/2007 4:31 pm
Been thanked: 8 times

Re: Vấn đề về form login???

Postby neverland87 » Tue 26/01/2010 10:26 pm

- 1: truyvan = "SELECT COUNT(*) FROM Users WHERE UsrName='" & taikhoan & "'AND UsrPass='" & matkhau & "'" --> giải pháp nối chuỗi dễ bị dính Sql Injection.
- 2: thử nhập chuỗi sau: 'OR' (có dấu nháy) vào ô txtTaiKhoan
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: Vấn đề về form login???

Postby thuyan1990 » Tue 26/01/2010 10:34 pm

ý bạn là sao mình không hiểu "- 2: thử nhập chuỗi sau: 'OR' (có dấu nháy) vào ô txtTaiKhoan"
Và nếu để tránh "giải pháp nối chuỗi dễ bị dính Sql Injection." thì phải làm thế nào bạn?? Bạn fix cái code trên dùm mình cái thanks!

neverland87
Guru
Guru
Posts: 490
Joined: Sat 26/05/2007 4:31 pm
Been thanked: 8 times

Re: Vấn đề về form login???

Postby neverland87 » Tue 26/01/2010 10:37 pm

thuyan1990 wrote:ý bạn là sao mình không hiểu "- 2: thử nhập chuỗi sau: 'OR' (có dấu nháy) vào ô txtTaiKhoan"
Và nếu để tránh "giải pháp nối chuỗi dễ bị dính Sql Injection." thì phải làm thế nào bạn?? Bạn fix cái code trên dùm mình cái thanks!

Chắc nói vầy bạn sẽ hiểu: txtTaiKhoan.Text = "'OR'" >:)
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: Vấn đề về form login???

Postby thuyan1990 » Tue 26/01/2010 10:45 pm

ý mình là muốn hỏi bạn tại sao phải dùng OR vì mình thấy trong cái code của mình đâu có cài nào cần dùng OR đâu :(

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: Vấn đề về form login???

Postby thuyan1990 » Tue 26/01/2010 11:09 pm

Cuối cùng mình đã làm thế này

Thêm vào code tren dòng lệnh sau
  1. Dim dr As New OleDb.OleDbCommand
  2.                 Dim cm As OleDb.OleDbDataReader
  3.                 dr = New OleDb.OleDbCommand(truyvan, conn)
  4.                 cm = dr.ExecuteReader
  5.                 If cm.Read() Then
  6.                     txtCapBac.Text = cm("TenTaiKhoan")
  7.                 End If


Các bạn cho ý kiến dùm cả đoạn code có dư/thiếu hay khuyết điểm gì không?? Mong các bạn chỉ giúp dùm thanks!!

PS: @neverland87: Bạn trả lời dùm mình mấy câu hỏi (của bạn) phía trên dùm thanks :D

neverland87
Guru
Guru
Posts: 490
Joined: Sat 26/05/2007 4:31 pm
Been thanked: 8 times

Re: Vấn đề về form login???

Postby neverland87 » Wed 27/01/2010 10:43 am

thuyan1990 wrote:ý mình là muốn hỏi bạn tại sao phải dùng OR vì mình thấy trong cái code của mình đâu có cài nào cần dùng OR đâu :(

'OR' là Username
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: Vấn đề về form login???

Postby thuyan1990 » Wed 27/01/2010 12:33 pm

Thật sự mình không hiểu ý bạn muốn nói cái gì (tại mình chưa rành về .NET cho lắm) 'OR' là Username là sao?? Vẫn câu hỏi cũ tại sao lại dùng OR ở đây nó có liên quan gì đến cau SQL trên ?????????

User avatar
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Posts: 1296
Joined: Fri 18/07/2008 12:08 pm
Location: Kiên Giang
Has thanked: 8 times
Been thanked: 117 times
Contact:

Re: Vấn đề về form login???

Postby gtdcomputer » Wed 27/01/2010 2:01 pm

Đó là bẫy lỗi SQL dùng 'Or' cho Username thì ai cũng đăng nhập được hết
Đây là lỗi SQL thường thấy trên mấy WEB data base củ.
  1. SELECT COUNT(*) FROM Users  WHERE UsrName='taikhoan'AND UsrPass='matkhau'

thành
[sql]SELECT COUNT(*) FROM Users WHERE UsrName=''OR''AND UsrPass='matkhau'[/sql]
Nếu mình nhớ không lầm là thế (Từng có một thời tập tành Hack web cùi mà)
Con người không quan tâm đến sự thật. Họ tin cái họ muốn, và về sau, cái đó sẽ trở thành sự thật

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: Vấn đề về form login???

Postby thuyan1990 » Wed 27/01/2010 2:36 pm

trời ý tôi hỏi là cách để sửa cái "giải pháp nối chuỗi dễ bị dính Sql Injection" mà nerver nói.
Tự nhiên kêu làm cái OR đó nên tui ko hiểu vì sao fai dùng nó. Với vấn đề la tôi hỏi code trên có sai gì không?? Và làm sao để giải quyết vấn đề mà never nói????

User avatar
anhtuyenbk
Guru
Guru
Posts: 1311
Joined: Thu 22/09/2005 4:12 pm
Location: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 times

Re: Vấn đề về form login???

Postby anhtuyenbk » Wed 27/01/2010 3:07 pm

- Kêu bạn làm cái OR đó để bạn thấy được lỗi Sql Injection đó.
- Cách sửa thì trong Net hỗ trợ rồi đó, bạn truyền theo kiểu Parameter chứ ko nối chuỗi như trên kia.
Xem các bài tut về thao tác với sql, access của tôi để biết thêm chi tiết.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

User avatar
Kasper
Guru
Guru
Posts: 1063
Joined: Fri 16/05/2008 10:54 am
Has thanked: 2 times
Been thanked: 76 times
Contact:

Re: Vấn đề về form login???

Postby Kasper » Wed 27/01/2010 3:10 pm

thuyan1990 wrote:trời ý tôi hỏi là cách để sửa cái "giải pháp nối chuỗi dễ bị dính Sql Injection" mà nerver nói.
Tự nhiên kêu làm cái OR đó nên tui ko hiểu vì sao fai dùng nó. Với vấn đề la tôi hỏi code trên có sai gì không?? Và làm sao để giải quyết vấn đề mà never nói????


Không dùng câu query trực tiếp nối chuỗi như vậy mà hãy dùng Parameter, đó là một cách.
Lành tợ tòng, ác tợ hoa,
Nhà hòa muôn việc đều nên.

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: Vấn đề về form login???

Postby thuyan1990 » Wed 27/01/2010 4:16 pm

Không phải là mính nói never mà là do mình không rành nên never nói không rõ nên mình không hiểu chứ mình cũng rất cảm ơn never về cài chữ OR đó :D
Mong các bạn giúp mình giải quyết vần đề dùm thanks!


Return to “Visual Basic .NET và C# (VB.NET & C#)”

Who is online

Users browsing this forum: No registered users and 4 guests