Kliknite tukaj, da si ogledate profil, kot ga vidijo drugi
 
Domov > Forum > Računalništvo

Kako v Visual Basic narediti povezavo z MySql bazo?

 
 
7.9.2011, 17:12
Kot rečeno v tvoji kodi pošlješ v sql stavku txtPassword.Text v nekodiriani obliki, ki jo je vnesel uporabnik.
Vendar pa, ker imaš v bazi shranjene md5 vrednosti, moraš zato pred tem sql stavkom vrednost txtPassword.Text pretvoriti v md5 ter nato v sql stavku uporabiti to novo vrednost.

Pa še ena postranska stvar. Če boš program dal na uporabo ostalim, potem je obvezno potrebno narediti preverjanje vnosa (odstraniti znak ' ), ker v tvoj program se da preko "sql injection" brez problema priti notri, tudi če ne poznaš gesla.

Oz. boljša implementacija je, da najprej dobiš zapis iz baze, ki ima iskani username, ter nato preverjaš vrednost gesla v bazi in vnešeno vrednost.

Kako ustvarjaš tabele na bazi, pa lahko vidiš v lekciji:
http://www.zmaga.com/ucenje.php?id=2400
 
 
 
7.9.2011, 17:49
A bi mi lahko kdo to uredil preko team viewer? bi lepo prosil... ker sam ne vem točno kaj delam oz. kaj morem naredit.. lahko me dodaš na skype? krizzan87
 
 
 
7.9.2011, 22:25
Pa če ti bo kdaj ratalo, prosim potem to tudi napiši sem ali pa napiši lekcijo
 
 
 
8.9.2011, 5:46
bom ja... pravkar sem kontaktiral še enega, in čakam na odgovor! ko uredim zadevo objavim lekcijo
 
 
 
9.9.2011, 18:23
eden mi je napisal naj uporabim MD5('thepasswrdhere' ) ampak nevem kje naj to uporabim

spremenil: podtalje (9.9.2011 ob 20.41.27)
 
 
 
9.9.2011, 20:45
Uporabiti moraš v tvojem sql stavku in sicer moraš namest:
& txtPassword.Text &
napisati
& MD5(txtPassword.Text) &

Ampak problem je, ker funkcije MD5 nimaš. Zato moraš najprej napisati funkcijo MD5, ki pretvarja navaden tekst v MD5.

To pa je v bistvu funkcij GenerateHash, ki sem jo napisal zgoraj. Funkcijo sem dobil na internetu, vendar kar sem sedaj na hitro preveril, ne vrača pravilne md5 vrednosti, tako da jo je treba malenkost spremeniti.

Tako da pravilna funkcija, ki iz teksta generira MD5, bi bila:
Private Function pretvori_v_MD5(ByVal SourceText As String) As String
Dim Md5 As New MD5CryptoServiceProvider()
Dim Data As Byte() = MD5.ComputeHash(Encoding.UTF8.GetBytes(SourceText))
Dim sBuilder As New StringBuilder()
Dim i As Integer
For i = 0 To Data.Length - 1
sBuilder.Append(Data(i).ToString("x2"))
Next i
Return sBuilder.ToString()
End Function


V kodo dodaj še čisto na vrhu še naslednji dve vrstici:
Imports System.Text
Imports System.Security.Cryptography


Tako da potem dodaj to funkcijo nekje v kodi in popravi sql stavek, da bo notri:
& pretvori_v_MD5(txtPassword.Text) &

... in program bi moral delovati.


spremenil: podtalje (9.9.2011 ob 21.01.48)
 
 
 
10.9.2011, 9:49
hmmm... tole je sedaj moja koda in ne razumem zakaj mi še kr javlja napačno uporabniško ime ali geslo. mogoče zaradi tega ker zraven še salt?




Imports System.Data.SqlClient
Imports MySql.Data.MySqlClient
Imports System.Text
Imports System.Security.Cryptography

Public Class Form1
Dim MySqlConnection As MySqlConnection

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MySqlConnection = New MySqlConnection
MySqlConnection.ConnectionString = "Server=SKRITO;Port=3306; User Id=SKRITO; Password=SKRITO; Database=SKRITO"
MySqlConnection.Open()

Dim Myadapter As New MySqlDataAdapter
Dim sqlquary = "SELECT * From forum_members WHERE name='" & txtUsername.Text & "'AND member_login_key='" & pretvori_v_MD5(txtPassword.Text) & "';"
Dim command As New MySqlCommand
command.Connection = MySqlConnection
command.CommandText = sqlquary
Myadapter.SelectCommand = command
Dim Mydata As MySqlDataReader
Mydata = command.ExecuteReader
If Mydata.HasRows = 0 Then
MsgBox("Error! Please check your Username/Password")
Else
Form2.Show()
Me.Close()
End If
End Sub
Private Function pretvori_v_MD5(ByVal SourceText As String) As String
Dim Md5 As New MD5CryptoServiceProvider()
Dim Data As Byte() = Md5.ComputeHash(Encoding.UTF8.GetBytes(SourceText))
Dim sBuilder As New StringBuilder()
Dim i As Integer
For i = 0 To Data.Length - 1
sBuilder.Append(Data(i).ToString("x2"))
Next i
Return sBuilder.ToString()
End Function
End Class


spremenil: Mirko Krizan (10.9.2011 ob 10.00.58)
 
 
 
10.9.2011, 12:31
Pri insidepro.com sem vtipkal moje geslo in salt in se je prava zgenerirana koda pojavila pri tem: md5(md5($salt).md5($pass)) torej to pomeni da se salt zraven šteje, ampak zdaj pa spet ne vem katero kodo dat not

spremenil: Mirko Krizan (10.9.2011 ob 12.36.39)
 
 
 
10.9.2011, 21:36
res bi te prosil podtalje da mi tole pomagaš rešit..
 
 
 
10.9.2011, 22:22
Do sedaj nisi nič omenil, da uporabljaš tudi "salt".

Glede na tvoj opis, bi bila potem pravilna koda naslednja:

& pretvori_v_MD5( pretvori_v_MD5("tvoja_salt_vrednost") + pretvori_v_MD5(txtPassword.Text) ) &


spremenil: podtalje (10.9.2011 ob 22.22.48)
 
 
Prijava in registracija
 
 
 
Zmaga.com ponuja brezplačno in razumljivo učenje računalniških programov, vas na enkraten način spozna z različnimi svetovnimi jeziki, s podrobno obrazloženimi recepti prikaže čare kulinarike in vam prežene strahove pred domačimi opravili.
 
 
Poleg tega lahko prebirate poučne članke, ki so namenjene širjenju naše splošne razgledanosti ter preverite svoje znanje z priljubljenim in enostavnim sistemom za preverjanje znanja. Če med vsebinami, ki se dodajajo vsak dan, ne najdete želenega znanja, je za vaša vprašanja na voljo dobro obiskan forum, kjer lahko tudi aktivno sodelujete. V primeru, da bi radi svoje praktično znanje delili z ostalimi, pa to lahko storite preko preprostega vmesnika za dodajanje vsebin. Zmagajte z znanjem z Zmaga.com!