Connecting to database from diff location

Stel hier je vragen met betrekking tot PHP, MySQL, HTML, CSS en JavaScript.
Forumregels
Check eerst onze helpsectie (https://www.antagonist.nl/help) voordat je hier een vraag stelt. Voor de meeste vragen hebben we uitgebreide handleidingen met uitleg.
Plaats reactie
shawndours
Berichten: 2
Lid geworden op: 20 mei 2017, 08:13

Connecting to database from diff location

Bericht door shawndours » 01 apr 2018, 18:31

Hallo
I probeer, met javascript, my script te verbinden met de database die ik heb voor mijn website.
Access denied for user 'shawndours_pls'@'************' (using password: YES)
var con = mysql.createConnection({
host: "shawndours.com",
user: "shawndours_pls",
password: "********",
database: "shawndours_aca"
});

Alvast bedankt
groeten

Reno
Berichten: 201
Lid geworden op: 22 jan 2010, 18:25

Re: Connecting to database from diff location

Bericht door Reno » 02 apr 2018, 12:24

Goedemiddag,

Als ik je goed begrijp heb je een javascript op een website die een directe verbinding naar een database opent. Zoja, dan kun je verder lezen ;-)

Dit komt omdat JavaScript een client-side language is. Dat houdt in dat het vanuit de client (jouw computer) uitgevoerd wordt.
Vanuit veiligheidsoverwegingen is de mysql-database van Antagonist alleen vanuit de localhost te bereiken. Je zal dus voor elke client die het script mag/kan benaderen het IP-adres moeten toevoegen als geauthoriseerd gebruiker in DirectAdmin.

Dit zou moeten werken, hoewel ik je dit ten strengste zou afraden omdat je je username EN wachtwoord gewoon blanco aan de user meegeeft. Iedereen die het script bekijkt, ziet het wachtwoord en kan in je database rondkijken. Dit zou je echt niet moeten willen..

Een database verbinding wordt daarom altijd in de backend aangeroepen, en nooit via een programmeertaal als javascript.

Hopelijk is het een beetje duidelijk, succes met je project!

Groeten,
Reno

Joris de Leeuw
Antagonist staff
Berichten: 1416
Lid geworden op: 13 feb 2016, 20:15

Re: Connecting to database from diff location

Bericht door Joris de Leeuw » 03 apr 2018, 07:40

Hallo shawndours,

Wat Reno zegt klopt inderdaad en is ten zeerste af te raden. Derden kunnen dan direct in de Javascript je gebruikersnaam en wachtword uitlezen in de webbrowser.

In plaats daarvan is het aan te raden een tussenlaag te gebruiken. Bijvoorbeeld door je JavaScript JSON requests te sturen naar een PHP-script. Na validatie kan het PHP-script de acties dan uitvoeren op de database. Zo voorkom je dat een derden zomaar ongewenste acties op je database uitvoert of zelfs alle gegevens uitleest.

Mocht je toch wensen dat een derden kan verbinden met je database kan je specifiek het IP-adres van het externe apparaat toestaan:
- https://www.antagonist.nl/help/nl/webho ... base#hosts

Hopende dat deze toelichting je verder op weg kan helpen.
Met vriendelijke groet,

Joris de Leeuw
Antagonist staff

MaartenOnline
Berichten: 1
Lid geworden op: 12 aug 2022, 21:52

Re: Connecting to database from diff location

Bericht door MaartenOnline » 12 aug 2022, 22:13

Dag Joris,

Ik probeer iets vergelijkbaars, echter gaat het erom dat de gebruiker zijn contact gegevens doorgeeft. Dit gaat dan vanuit de browser via HTML naar PHP (contactform.php) en dan zou het naar de database moeten gaan. Voor de veiligheid heeft de gebruiker (deb******_AddContact) alleen maar schrijfrechten.

Backend fatal error: PHP Fatal error: Uncaught mysqli_sql_exception: Access denied for user 'deb******_AddContact'@'localhost' (using password: YES) in /home/deb******/domains/**************.site/public_html/Contactform.php

Is het mogelijk om bezoekers naar de database te schrijven of is dit niet mogelijk?

Alvast bedankt voor het meedenken!

Met vriendelijke groet,
Maarten

Joris de Leeuw
Antagonist staff
Berichten: 1416
Lid geworden op: 13 feb 2016, 20:15

Re: Connecting to database from diff location

Bericht door Joris de Leeuw » 15 aug 2022, 10:13

De melding wijst er op dat je per abuis verkeerde inloggegevens op de database gebruikt. Ik raad je aan na te lopen of je PHP-script wel met de juiste gegevens met de database verbindt.

Merk op dat qua veiligheid het altijd beter is dat je in je applicatie al input valideert en situaties afvangt. Dat puur laten leunen op database rechten zou ik niet aanraden.

Als een bezoeker iets doorgeeft komt het namelijk eerst bij je PHP-script uit. Daarin zul je dus dienen zorgen dat het goed en veilig gaat. Je PHP-script geeft het dan verder in een afgeschermde lokale socket verbinding aan de database door.
Met vriendelijke groet,

Joris de Leeuw
Antagonist staff

Plaats reactie