One-page website beveiligen, hoe?

Status
Niet open voor verdere reacties.

femke98

Meubilair
Lid geworden
16 dec 2006
Berichten
6.658
Ik lees veel over hoe je een one-page maakt (dat weet ik nu wel hahahaha) maar ik lees nergens of je deze nog moet beveiligen en zo ja, hoe?

Ik neem aan dat ik de files qua machtigingen kan veranderen maar of dat verstandig is, is een tweede.

Weet iemand hier het antwoord?
 
Beveiligen tegen wat?.....
 
1. Zorg dat de website up-to-date is.

Vervang de jquery regel door de recente versie 3.6 (met integriteit controle)
Code:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

Vervang de bootstrap regel door de recente versie 4.6 (met integriteit controle)
Code:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css" integrity="sha512-P5MgMn1jBN01asBgU0z60Qk4QxiXo86+wlFahKrsQf37c9cro517WzVSPPV1tDKzhku2iJ2FVgL67wG03SGnNA==" crossorigin="anonymous" referrerpolicy="no-referrer" />

2. Permissies
Zet alle bestanden die met het mailen te maken hebben op 444

3. Zet in mappen die geen index.html of index.php hebben een leeg index.html bestand (bestandsgrootte 0 bytes)

4. Zet in de root een bestand robots.txt met als enige inhoud: User-agent: *

5. Gebruik het .htaccess bestand voor de rest van de beveiliging
Code:
### page not found pagina maken
ErrorDocument 404 https://www.example.nl/error404.html

### tegen sniffing
Options -Indexes
ServerSignature Off

### rewrite on
RewriteEngine on

### base (gebruik in root / en in submap /submap)
RewriteBase /

### security: geen toegang tot mailer-config.php
<Files mailer-config.php>
Order allow,deny
Deny from all
</Files>

### security: geen toegang tot deze extensies
<FilesMatch "\.(bak|cgi|conf|dist|htaccess|htpasswd|inc|ini|log|pl|py|sh|sql)">
Order allow,deny
Deny from all
</FilesMatch>

### security: ETag en SameOrigin
<IfModule mod_headers.c>
# disable ETags
Header unset ETag
FileEtag None
# same origin, bij iframe problemen de volgende regel weghalen
Header set X-Frame-Options "SAMEORIGIN"
</IfModule>

### security: check request_uri and query_string
# if query contains http: or https:
RewriteCond %{QUERY_STRING} (http\:|https\:) [NC,OR]
# or url contains [ or ] (allowed but unsafe)
RewriteCond %{REQUEST_URI}  (\[|\]) [OR]
RewriteCond %{QUERY_STRING} (\[|\]) [OR]
# or url contains 3C or 3E (<script> hack)
RewriteCond %{REQUEST_URI}  (%3C|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (%3C|%3E) [NC,OR]
# or url contains proc/self/environ (lfi hack)
RewriteCond %{REQUEST_URI}  proc\/self\/environ [NC,OR]
RewriteCond %{QUERY_STRING} proc\/self\/environ [NC,OR]
# or any script is trying to set a php global via query
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [NC,OR]
# or any script is trying to modify _request via query
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [NC,OR]
# or query contains double slash
RewriteCond %{QUERY_STRING} // [OR]
# or query contains asterisk
RewriteCond %{QUERY_STRING} \*
# then 403 forbidden request
RewriteRule ^(.*)$ - [F,L]
 
Laatst bewerkt:
Om te beveiligen moet je inderdaad eerst weten wat je wilt gaan beveiligen.

Daarnaast zijn er genoeg zaken waar je over na kunt denken.

Zoals bijv. het zetten van read-only permissies op de files en folders. Behalve natuurlijk de documenten die wel wijzigen. Bijv. een cache map.
Rechten voor de database gebruiker beperken tot het minimaal noodzakelijke
Het toevoegen van een CDN
Gebruik op zijn minst een GEO IP block, om met name bezoekers uit allerlei verre landen te weren. Tenzij je natuurlijk bezoekers verwacht uit die regio's.

Hou er wel rekening mee dat als je het systeem helemaal dichttimmert het proces van updaten ook wel iets complexer wordt. Verder hangt het er ook van af op welk platform je website draait en in hoeverre je toegang hebt tot dat platform. Bij bijv. shared hosting zul je niet heel veel kunnen doen aan de beveiliging. Is het een VPS dan kun je veel verder gaan in de beveiliging
 
@RogerS Vanuit een vorige post kan ik wat extra info geven. Het is sharded hosting bij antagonist op een linux platform. Het is een one-page website zonder cms, zonder db. In deze situatie is er geen cache map. Een cdn heb ik bij #3 aanbevolen. De enige extra functionaliteit is PHPMailer met read-only permissies op de bestanden.

Geo blocking zou idd nog toegevoegd kunnen worden.
 
Laatst bewerkt:
Als het een behoorlijk statische site is, dan hoef je niet echt gek veel te beveiligen.
De meeste hacks komen binnen door slecht gebouwde of geüpdatete PHP-scripts.

GeoBlock is wel wel leuk, maar kost wel een hoop resources bij veel bezoekers. beter zet je die in op plekken die kwetsbaar zijn door het geklier van buitenlandse IP's, maar zorg er wel voor dat die lijsten UP-to-date zijn. IP-blocks willen wel eens verschoven worden naar andere eigenaren.

Als je helemaal veilig wilt zijn, kan je ook de site achter CloudFlare zetten. Werkt ideaal....
Ontzorgt een hoop.
 
De website waar het om gaat hoeft niet zwaar beveiligd te worden, het is geen payment provider ;)
De 5 punten hierboven is meer dan voldoende + de recaptcha die je al hebt.
 
Laatst bewerkt:
Klopt, maar Cloudflare werkt op elke site, en naast cachen en sneller maken beveiligt het ook een hoop.
 
Off-Topic. Structured Data is makkelijk voor google, dit kan je in de <head> sectie zetten, of vlak boven </body>.
De minimale data die je aanbiedt is deze code, dit kan je verder uitbreiden als je dat wilt.

- Wijzig dingen die in hoofdletters staan
- Wijzig telefoonnummers (noteer het nummer zoals het er staat)
- Wijzig linkjes en emailadressen
- Adres omzetten in latitude/longitude (daar zijn conversie sites voor)
- Maak een herkenbare og-image.jpg (bijv. logo/naam van bedrijf)

De rest niet wijzigen.
Je kan de data bij google valideren op https://search.google.com/test/rich-results

Code:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "NAAM VAN BEDRIJF",
"description": "GEEF EEN OMSCHRIJVING",
"telephone": "06-12345678",
"email": "info@example.nl",
"url": "https://www.example.nl",
"image": "https://www.example.nl/img/og-image.jpg",
"address": {
  "@type": "PostalAddress",
  "streetAddress": "ADRES HUISNR",
  "postalCode": "1234 AB",
  "addressLocality": "PLAATS",
  "addressCountry": "Nederland"
},
"contactPoint": {
  "@type": "ContactPoint",
  "name": "VOORNAAM ACHTERNAAM",
  "contactType": "sales",
  "telephone": "+31 6 12345678",
  "url": "https://www.example.nl"
},
"geo": {
  "@type": "GeoCoordinates",
  "latitude": "xx.xxxxxx",
  "longitude": "x.xxxxxx"
}
}
</script>
 
Beveiligen tegen wat?.....

hahaha, nou people die in de index.php en andere files zitten te snuffelen terwijl ze daar niets te zoeken hebben.
Ik dacht aan een .htaccess (op WP werkt dat uitstekend) maar weet natuurlijk niet of dat hier op werkt.

In mijn WP websites heb ik overigens de config en htacces al op 444.

1. Zorg dat de website up-to-date is.

2. Permissies
Zet alle bestanden die met het mailen te maken hebben op 444

3. Zet in mappen die geen index.html of index.php hebben een leeg index.html bestand (bestandsgrootte 0 bytes)

4. Zet in de root een bestand robots.txt met als enige inhoud: User-agent: *

5. Gebruik het .htaccess bestand voor de rest van de beveiliging
Top! Dank je wel!

Wat nummer 4 betreft, kan het contactformulier dan wel contact maken met de phpmailer, en die andere mailer.php en mailer.config?

Als het een behoorlijk statische site is, dan hoef je niet echt gek veel te beveiligen.
Ja, dat is het wel, op dat filmpje na, met die loop.
 
hahaha, nou people die in de index.php en andere files zitten te snuffelen terwijl ze daar niets te zoeken hebben.
Gelukkig wordt PHP door de server 'geparsed' en alle output daarvan (HTML) naar de bezoeker gestuurd.
Standaard kunnen ze de inhoud van het PHP-script nooit bekijken. Of er moet ergens een upload-lek in de site zitten waarmee ze een 'shell' kunnen uploaden om dit wel te kunnen doen.

Ik dacht aan een .htaccess (op WP werkt dat uitstekend) maar weet natuurlijk niet of dat hier op werkt.
In mijn WP websites heb ik overigens de config en htacces al op 444.
Ja kan daar inderdaad wat veiligheid aanleggen op de aanroepen naar de webserver. Dit ka je ook bewerkstellingen met Cloudflare.

Wat nummer 4 betreft, kan het contactformulier dan wel contact maken met de phpmailer, en die andere mailer.php en mailer.config?
Robots.txt is enkel bedoeld als instructie voor search-engines. Dit heeft niks met je contactformulier te maken.
Je kan er in bepalen wat wel en niet geïndexeerd mag worden. Op Google valt er een hoop over de werking te lezen.
Het is wel zo dat het opvolgen van de regels van dit bestand door search-engines geen verplichting is, en en je anderen ook kan laten weten wat verboden plekken zijn voor search-engines.
Dus sowieso zou je die goed moeten beveiligen.
 
Laatst bewerkt:
robots.txt is altijd leesbaar voor iedereen. Zet permissie 444 op dit bestand om 'm read-only te maken. Zoals Aar terecht aangaf, als je in robots.txt aangeeft waar een zoekmachine niets te zoeken heeft dan vragen anderen zich af wat je daar dan hebt staan. Google wil wel graag dat robots.txt aanwezig is.
1 regel in dit bestand is voldoende: User-agent: *

Je hebt een iframe op je website. Mogelijk werkt die niet goed, haal dan deze regel weg uit .htaccess
Header set X-Frame-Options "SAMEORIGIN"

Als het een behoorlijk statische site is, dan hoef je niet echt gek veel te beveiligen.
Ja, dat is het wel, op dat filmpje na, met die loop.
Video bestand een permissie 444 geven, dat is voldoende.
Wel even controleren of de video op een iPhone werkt, die vragen om een wat strikter video formaat.
 
Laatst bewerkt:
Wat nummer 4 betreft, kan het contactformulier dan wel contact maken met de phpmailer, en die andere mailer.php en mailer.config?
Ik bedoelde nummertje 2, sorry. Daar staat:
2. Permissies
Zet alle bestanden die met het mailen te maken hebben op 444

Wel even controleren of de video op een iPhone werkt, die vragen om een wat strikter video formaat.
Ik heb geen iPhone en ik zal er ook nooit eentje aanschaffen. Zelf niemand in mijn omgeving waarvan ik weet of ze er een hebben.
Dus mocht een van jullie er een hebben, wil je testen? Mail mij voor de link naar de website.

En bedankt weer! Ga het regelen.
 
Ik bedoelde nummertje 2
Vooral alle (php)mailer en config bestanden op 444 zetten (read-only)

Ik heb geen iPhone en ik zal er ook nooit eentje aanschaffen.
Ik ook niet maar het gaat erom dat bij mensen die er wel eentje hebben de website er goed uit ziet, met name de video..
Je kan de "iPhone" vraag hier stellen maar dan zal je het linkje moeten delen ;)
 
Je kan de "iPhone" vraag hier stellen maar dan zal je het linkje moeten delen
Oké komt die:
testsdevriessloopwerken en dan uiteraard .nl

Wie wil testen met zijn iphone?
Laat je even weten hoe de website eruit ziet?
Dank je wel.
 
1. Zorg dat de website up-to-date is.

Vervang de jquery regel door de recente versie 3.6 (met integriteit controle)
Code:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

Vervang de bootstrap regel door de recente versie 4.6 (met integriteit controle)
Code:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css" integrity="sha512-P5MgMn1jBN01asBgU0z60Qk4QxiXo86+wlFahKrsQf37c9cro517WzVSPPV1tDKzhku2iJ2FVgL67wG03SGnNA==" crossorigin="anonymous" referrerpolicy="no-referrer" />

Deze 2 kan niet nergens vinden in de index.php

Verder bijna alle mappen die wel files hadden maar geen index.html, deze dus aangemaakt.

Nog een vraagje: in de map .php staan een hoop php-mail.log files.
Gaan die automatisch weg of worden dat alleen maar meer files?
En kan ik deze opschonen?
 
Logbestanden kan je verwijderen of leeg gooien.
Het is ook handig uit te zoeken waar ze gegenereerd worden.

Gebruik een goede editor (Ik gebruik NetBeans), laad al je bestanden erin als een project, en zoek op de te zoeken tekst, of een deel daarvan.
 
Laatst bewerkt:
in de map .php staan een hoop php-mail.log files.
Deze zijn niet van PHPMailer denk ik. Je kan even kijken wat in deze files staat.

Code:
Deze regel
<link rel="stylesheet" href="css/bootstrap.min.css">
wordt
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css" integrity="sha512-P5MgMn1jBN01asBgU0z60Qk4QxiXo86+wlFahKrsQf37c9cro517WzVSPPV1tDKzhku2iJ2FVgL67wG03SGnNA==" crossorigin="anonymous" referrerpolicy="no-referrer" />


Deze regel
<script src="js/jquery.min.js"></script>
wordt
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
 
Over die log's...

Dat zijn dan log-files vanuit de mail() mail-functie. Die komen vanuit de webserver.
Ikzelf gebruik DirectAdmin en ik zie ook die map buiten mijn web-root. Zo te zien worden die netjes elke dag gerotated, zodat ze vanzelf weer gereset worden.
Don't worried dus.
 
Off-Topic. Structured Data is makkelijk voor google, dit kan je in de <head> sectie zetten, of vlak boven </body>.
De minimale data die je aanbiedt is deze code, dit kan je verder uitbreiden als je dat wilt.

...


"contactType": "sales",
"telephone": "+31 6 12345678",
"url": "https://www.example.nl"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": "xx.xxxxxx",
"longitude": "x.xxxxxx"
}
}
</script>
[/code]

Deze vindt ik goed criminelen zoveel info geven dat je gewoon vraag om opgelicht te worden.Dat google of bigtech dat willen geloof ik maar dat mensen het daadwerkelijk doen, zich zo bloot geven snap je niet.Er bestaan landen met lager normen en waarden als hier in het westen . Dat je deze gegevens in een streekkrant zou plaatsen maar ook niet buiten de landen waar je actief wil zijn.
 

Bijlagen

  • DEV_htaccess weetjes.odt
    73,9 KB · Weergaven: 14
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan