Beveiligen van json bestanden

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • jandeman023
  • Registratie: Oktober 2015
  • Laatst online: 02-10 01:24
Ik ben bezig met het maken van een website. Hierbij gebruik ik op de server opgeslagen Json bestanden. In deze bestanden staat belangrijke informatie die niet zichtbaar mag zijn voor mensen die niet ingelogd zijn.

Nu is het zo dat als ik gewoon naar mijnwebsite.nl/json/filename.json ga dat ik als ik wel of niet ingelogd ben gewoon deze bestanden kan bekijken. Dit is natuurlijk niet de bedoeling.

Ik vraag ed gegevens uit de Json bestanden als volgens op:

code:
1
2
3
4
5
6
7
8
9
    $.getJSON('json/filename.json', function (data) {
        var address = $('#address');
        var locaties = data.map(function (item) {
            return item.naam + '<br>' + item.telefoon + ' ' + item.mobiel + '<br>' + item.postcode;

        });
        address.empty();
        address.append(locaties);
    });


Deze link: json/filename.json is gewoon uit de broncode uit te lezen.

Ik zou dus graag willen dat je allen bij die bestanden bent als je ingelogd bent.
Als inlog systeem maak ik gewoon gebruik _session

[ Voor 5% gewijzigd door jandeman023 op 19-05-2017 11:54 ]


Acties:
  • 0 Henk 'm!

  • DennusB
  • Registratie: Mei 2006
  • Niet online
jandeman023 schreef op vrijdag 19 mei 2017 @ 11:52:
Ik ben bezig met het maken van een website. Hierbij gebruik ik op de server opgeslagen Json bestanden. In deze bestanden staat belangrijke informatie die niet zichtbaar mag zijn voor mensen die niet ingelogd zijn.

Nu is het zo dat als ik gewoon naar mijnwebsite.nl/json/filename.json ga dat ik als ik wel of niet ingelogd ben gewoon deze bestanden kan bekijken. Dit is natuurlijk niet de bedoeling.

Ik vraag ed gegevens uit de Json bestanden als volgens op:

code:
1
2
3
4
5
6
7
8
9
    $.getJSON('json/filename.json', function (data) {
        var address = $('#address');
        var locaties = data.map(function (item) {
            return item.naam + '<br>' + item.telefoon + ' ' + item.mobiel + '<br>' + item.postcode;

        });
        address.empty();
        address.append(locaties);
    });


Deze link: json/filename.json is gewoon uit de broncode uit te lezen.

Ik zou dus graag willen dat je allen bij die bestanden bent als je ingelogd bent.
Dat zal je echt server side op moeten lossen met 1 of andere hippe authenticatie laag voor je json files vrees ik..

Owner of DBIT Consultancy | DJ BassBrewer


Acties:
  • +1 Henk 'm!

  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 02-10 21:21
Ik vind het beveiligen van bestanden op een server een nachtmerrie. Ik serveer dat soort informatie dan veel liever via een aparte API die fatsoenlijk kan controleren of iemand ingelogd is.

Dat zou dan ook mijn advies zijn hier, zorg dat de informatie die je nu uit een bestand wilt lezen, rechtstreeks uit een API komt.

Acties:
  • +1 Henk 'm!

  • emnich
  • Registratie: November 2012
  • Niet online

emnich

kom je hier vaker?

^ dit, zorg er dan ook voor dat je die json bestanden buiten de web root opslaat.

Acties:
  • 0 Henk 'm!

  • Kalief
  • Registratie: Maart 2005
  • Laatst online: 05-10 19:57

Niemand wordt Kalief in plaats van de Kalief!


Acties:
  • +3 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Even aangenomen dat je PHP gebruikt: zet de bestanden buiten de webroot, kijk naar fpassthru() en maak een 'getfile.php' o.i.d. die eerst checked of je ingelogd bent / gemachtigd bent het bestand te bekijken en daarna middels fpassthru() (en header() om de juiste content-type te zetten) het bestand naar de browser stuurt. Is de gebruiker niet gemachtigd dan stuur je middels header() een 403 forbidden o.i.d.

Dus, in pseudo-code:

PHP:
1
2
3
4
5
6
7
8
$requestedfile = $_GET('filename');

if user.loggedIn && user.canView($requestedfile) {
    header('Content-Type: application/json');
    fpassthru($root . $requestedfile);
} else {
    header('HTTP/1.1 403 Forbidden');
}


Let daarbij wel op dat je de filename sanitized / controleert zodat men niet /etc/passwd kan downloaden o.i.d. Lees hier meer.

[ Voor 53% gewijzigd door RobIII op 19-05-2017 12:31 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • jandeman023
  • Registratie: Oktober 2015
  • Laatst online: 02-10 01:24
sorted.bits schreef op vrijdag 19 mei 2017 @ 11:54:
Ik vind het beveiligen van bestanden op een server een nachtmerrie. Ik serveer dat soort informatie dan veel liever via een aparte API die fatsoenlijk kan controleren of iemand ingelogd is.

Dat zou dan ook mijn advies zijn hier, zorg dat de informatie die je nu uit een bestand wilt lezen, rechtstreeks uit een API komt.
emnich schreef op vrijdag 19 mei 2017 @ 12:07:
^ dit, zorg er dan ook voor dat je die json bestanden buiten de web root opslaat.
Ja, de bestanden komen al uit een API. alleen wanneer ik de bestanden direct van de API probeer te benaderen krijg ik deze error in de console en geeft hij niets weer:

XMLHttpRequest cannot load http://apiwebsite:0000/33/location.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.20.0.127' is therefore not allowed access.

Acties:
  • 0 Henk 'm!

  • emnich
  • Registratie: November 2012
  • Niet online

emnich

kom je hier vaker?

@jandeman023 En heb je die fout al even gegoogled?

Acties:
  • 0 Henk 'm!

  • jandeman023
  • Registratie: Oktober 2015
  • Laatst online: 02-10 01:24
emnich schreef op vrijdag 19 mei 2017 @ 12:53:
@jandeman023 En heb je die fout al even gegoogled?
ja. zonder echt goed resultaat.

Acties:
  • 0 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 18:06
Je mag met Javascript niet zomaar cross-origin requests doen. Dus van domein A naar domein B.

Als je dat toch wil, moet je server dat toestaan door de Acces-Control-Allow-Origin mee te sturen. Aangezien je dat niet doet, weigert je browser het te laden.
Zie ook https://developer.mozilla.../HTTP/Access_control_CORS

Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Cross-origin request zijn browser security; het probleem hier is server security.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 06-10 17:05
Wat je zou kunnen doen om niemand bij de website te laten is het bestand een map naar onderen te zetten. Dus ../public_html. Hierdoor kun jij het bestand nog steeds gebruiken, maar andere mensen kunnen hier dan niet bij komen.

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 15:57
MSalters schreef op dinsdag 23 mei 2017 @ 16:59:
Cross-origin request zijn browser security; het probleem hier is server security.
Server security is de vraag, maar is dat ook echt het probleem? Als je zelf toegang hebt tot de code van de API waar het hier over gaat kan je die beter zo configureren dat je daar direct bij je json bestanden kan. Dat doe je dan door een header toe te voegen:

code:
1
Access-Control-Allow-Origin: *


En anders de oplossing van @RobIII.

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/

Pagina: 1