Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: ASP ja salasanat yms

Sivun loppuun

jjude [29.04.2018 15:30:02]

#

En näistä paljoa ymmärrä, mutta tarve on käsitellä PALVELIN2-palvelimella
olevaa MySQL kantaa PALVELIN1-palvelimen "html-sivulla".
Mobiilisovellus lähettää pari tietoa GET-metodilla PALVELIN1:lle.
PALVELI1:llä ASP-sivu noukkii nuo tiedot ja tekee jutut PALVELIN2 tietokantaan.

Löysin netistä alla olevan ASP jutun joka käsittääkseni käsittelee
toisen (ei local) palvelimen MySQL kantaa. Olenko oikeassa?

Dim oConn, oRs
Dim qry, connectstr
Dim db_name, db_username, db_userpassword
Dim db_server

db_server = "mysql.secureserver.net"
db_name = "your_dbusername"
db_username = "your_dbusername"
db_userpassword = "your_dbpassword"
fieldname = "your_field"
tablename = "your_table"

connectstr = "Driver={MySQL ODBC 3.51 Driver};SERVER=" & db_server & ";DATABASE=" & db_name & ";UID=" & db_username & ";PWD=" & db_userpassword

Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open connectstr

qry = "SELECT * FROM " & tablename

Set oRS = oConn.Execute(qry)

if not oRS.EOF then
while not oRS.EOF
response.write ucase(fieldname) & ": " & oRs.Fields(fieldname) & "
"
oRS.movenext
wend
oRS.close
end if

Set oRs = nothing
Set oConn = nothing

Miten ASP sivulla pitää toimia noiden käyttäjätunnus/salasanojen kanssa?
Pääseekö niitä jotenkin sivulliset näkemään?

Grez [29.04.2018 15:59:57]

#

Jos kaikki on konffattu oikein, niin ei pääse sivulliset näkemään. Ihan sama tilanne sinänsä kuin minkä tahansa palvelimella ajettavan skriptauskielen kanssa, kuten PHP:n.

Sinänsä melkoisen ruma esimerkki mun mielestä.

jjude [29.04.2018 16:51:27]

#

Grez kirjoitti:

Jos kaikki on konffattu oikein, niin ei pääse sivulliset näkemään. Ihan sama tilanne sinänsä kuin minkä tahansa palvelimella ajettavan skriptauskielen kanssa, kuten PHP:n.

Sinänsä melkoisen ruma esimerkki mun mielestä.

Saa sievistää, minä en osaa.
Mobiili lähettää esim. näin:
HTTP://oma.palvelin.fi?kanta=Karhu&rivi='jos','kun',0.0,'tulee','menee',0.0,''
jossa kanta määrää tietokannan ja rivi on tauluun TAULU lisättävät tiedot
Onko tuolle rivi "muuttujalle" joku suositeltava maksimimitta/merkkimäärä.

Esim. jos kanta = Karhu tietokanta on KANTA1 jolloin
palvelimen (IP) 10.1.1.2 tietokantaan KANTA1 tauluun TAULU lisätään tuo rivi
insert into KANTA1 values (rivi)
Mobiilille palautetaan esim. rivin pituus, jolla varmistetaan, että lähetys
onnistui (rivin pituus sama kuin lähetetty).
Ja samaan syssyyn saa tarjota koodia jolla tietoja voi kysellä kannasta
samalla systeemillä.

Kiitos.

Grez [29.04.2018 17:12:31]

#

En nyt jaksa toisten projekteja alkaa koodaamaan, mutta kannattaa käyttää parametrisoituja kyselyitä sitten kun muutat tuon koodin ottamaan nuo parametrit mobiililta vastaan (tai jollain muulla tavalla varmistaa ettei tule sql injektioaukkoa). Nythän koodi käyttää vain kiinteästi määriteltyjä muuttujia, joten muokkaamattomassa koodissa ei ongelmaa varsinaisesti ole.

jjude [29.04.2018 20:03:25]

#

Grez kirjoitti:

Jos kaikki on konffattu oikein, niin ei pääse sivulliset näkemään. Ihan sama tilanne sinänsä kuin minkä tahansa palvelimella ajettavan skriptauskielen kanssa, kuten PHP:n.

Ainakaan palomuurista ei ole avattu kuin http/https ja ftp
muusta ei ole tietoa...

jjude [30.04.2018 09:19:01]

#

Ei tämä edes toimi minulla.
500 - Internal server error.
Tähän tyssää: oConn.Open connectstr
Johtunee kai kun palvelin on "remote" ja ip:llä yritetään yhteyttä?!?

Sain toimimaan, piti käyttää ODBC driverin UNICODE versiota

jjude [30.04.2018 12:42:46]

#

Eipäs toimikkaan.
Yhteys syntyy, mutta tähän objRecordSet.Open kykkää

Const adOpenStatic = 3
Const adLockOptimistic = 3
	Dim server, data_base, user, pass
	server="xx.xx.xx.xx"
	date_base="database"
	user="useri"
	pass="passi"
	Set objConn = CreateObject("ADODB.Connection")
	Set objRecordSet = CreateObject("ADODB.Recordset")
	objConn.open = ("Driver={MySQL ODBC 8.0 UNICODE Driver}; Server=" & server & "; Database=" & data_base & "; UID=" & user & "; PWD=" & pass & ";PORT=3306; Option=3")

objRecordSet.Open "SELECT * FROM Taulu", _
objConn, adOpenStatic, adLockOptimistic

Grez [30.04.2018 13:39:37]

#

Minkä virheilmoituksen se tarkalleen ottaen antaa. Tuo 500 Internal Server error on sivuston käyttäjälle näkyvä ilmoitus joka ei tarkoituksella sisällä muuta tietoa kuin että "palvelimella olevassa softassa on joku bugi". Varsinainen virheilmoitus löytynee palvelimelta lokeista.

jjude [30.04.2018 14:39:14]

#

Grez kirjoitti:

Minkä virheilmoituksen se tarkalleen ottaen antaa. Tuo 500 Internal Server error on sivuston käyttäjälle näkyvä ilmoitus joka ei tarkoituksella sisällä muuta tietoa kuin että "palvelimella olevassa softassa on joku bugi". Varsinainen virheilmoitus löytynee palvelimelta lokeista.

Palvelin jossa asp-sivu on HTTPERR kertoo vain "Timer_ConnectionIdle"
Palvelin jossa MariaDB on MariaDB:n error log ei kerro mitään.
Mistähän pitäisi kaivaa?

jjude [30.04.2018 20:00:46]

#

Eikös tuo nyt näytä siltä, että OBDC driveri on OK (asennettu wininstall jutulla, ei kai mitää DLL:iä tarvitse "rekisteröidä"?) palvelin 64bit joten niin on driverikin,
palvelimien yhteydet on OK (toimii kyllä hyvin myös normi windows ohjelmalla),
ASP on OK (muut asp jutut toimii hyvin).
MySQL hallintasoftani (Heidi) näyttää että tuo yhteys on "sleep" tilassa.
Mitä voisin vielä tutkailla?? Vi..u näiden kanssa...

groovyb [30.04.2018 21:25:55]

#

mitäpä jos debuggaisit sitä koodiasi. aseta breakpointteja, ja katso mihin jämähtää ja millä virheilmoituksella. 500 tosiaan tarkoittaa että softassasi tapahtuu virhe, eventlogeista varmaan selviää stack trace myös, joka kertoo mitä on tapahtunut.

jjude [02.05.2018 12:58:01]

#

Sain toimimaan!
Mutta nyt kiusaa taas ääkköset.
Jos syötteessä esim. ö se tallentuu ö vaikka osoiterivillä näyttää ihan OK
http://0.0.0.0/Asp/Koe.asp?db=kanta&rivi='testi­',2,'pöö'

Ilmeisesti Koe.asp sivulla pitäisi tehdä jotain määrityksiä MITÄ?

groovyb [02.05.2018 13:38:12]

#

Mikä enkoodaus sinulla on tietokannassasi käytössä?
tarkista
a) koodissasi, missä muodossa syöte saapuu aspisivullesi
b) millaisena se on tallentunut tauluun
c) millaisena se palautuu kannasta luettuna
d) millaisena se rendataan

vaihtoehtoja virheelliselle tekstille on
a) Virheellinen merkistö html -sivullasi
https://www.w3schools.com/html/html_charset.asp
b) virheellinen merkistö tietokannassasi
https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-utf8mb3.html

ja ihan vinkkinä, ota parametrisoidut kyselyt käyttöön. mitään ei saisi suoraan suorittaa sellaisenaan, vaan parametrien kautta (https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-parameters.html)

jjude [02.05.2018 15:12:27]

#

groovyb kirjoitti:

Mikä enkoodaus sinulla on tietokannassasi käytössä?
tarkista
a) koodissasi, missä muodossa syöte saapuu aspisivullesi
b) millaisena se on tallentunut tauluun
c) millaisena se palautuu kannasta luettuna
d) millaisena se rendataan

vaihtoehtoja virheelliselle tekstille on
a) Virheellinen merkistö html -sivullasi
https://www.w3schools.com/html/html_charset.asp
b) virheellinen merkistö tietokannassasi
https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-utf8mb3.html

ja ihan vinkkinä, ota parametrisoidut kyselyt käyttöön. mitään ei saisi suoraan suorittaa sellaisenaan, vaan parametrien kautta (https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-parameters.html)

a) tarkoitat ilmeisesti tätä : latin1_swedish_ci
b) muut ohjelmat jotka tallentaa samaan tauluun lähettävät ihan
selvän ö:n ja se näkyy kannassa ö:nä.
Nettitallennus lähettää osoiterivillä näkyvän ö ja se
näkyy kannassa ö
c) Nettisivulle se palautuu ö ja muutenkin
d) ???

Täytyy tehdä ainakin alkuun purkkavirituksellä eli replacella...
Tai tietokantaan käyttöön utf8_swidish_ci taitaa auttaa?!?

Nyt jostain syystä alkoi toimimaan.
Tämäkö

<meta charset="UTF-8">

oli onnen avain?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta