dsmrreader / dsmr-reader

DSMR-telegram reader & data visualizer for hobbyists. Free for non-commercial use.
https://dsmr-reader.readthedocs.io
Other
463 stars 95 forks source link

Not able to configure dmsr-reader: CSRF verification failed. Request aborted. #2001

Open todool opened 5 months ago

todool commented 5 months ago

Language / Voertaal

🇳🇱 Nederlandstalig

Help yourself

Inquiry

Help with installation or upgrade

Description

I have the dsmr reader running on a Raspberry PI4 (Home assistant) via docker. If I try to open the configuration page I get the message :

"Forbidden (403) CSRF verification failed. Request aborted.

You are seeing this message because this HTTPS site requires a “Referer header” to be sent by your Web browser, but none was sent. This header is required for security reasons, to ensure that your browser is not being hijacked by third parties.

If you have configured your browser to disable “Referer” headers, please re-enable them, at least for this site, or for HTTPS connections, or for “same-origin” requests.

If you are using the tag or including the “Referrer-Policy: no-referrer” header, please remove them. The CSRF protection requires the “Referer” header to do strict referer checking. If you’re concerned about privacy, use alternatives like <a rel="noreferrer" …> for links to third-party sites."

The access to my raspberry is via DuckDNS (https)

Whatever I do, other browser, cleaning cookies and so on nothing helps.

DSMR-reader version

1.11.3

DSMR-reader platform

Docker (e.g. Xirixiz's DSMR-reader Docker)

Optional: Debug info dump (of DSMR-reader)

No response

Optional: Smart meter telegram

No response

dennissiemensma commented 5 months ago

Bedankt voor je vraag. Allereerst, draai je daadwerkelijk nog DSMR-reader v1?

Wat is de dump van: https://dsmr-reader.readthedocs.io/nl/v5/how-to/troubleshooting/debug-info-dump.html

dennissiemensma commented 5 months ago

Voor de rest heb ik overigens geen idee wat het precies veroorzaakt. Mocht je nog wel een hele oude DSMR-reader draaien, dan is updaten denk ik stap 1.

Ik dacht ook nog even aan dit issue, maar dat lijkt een andere fout: https://github.com/dsmrreader/dsmr-reader/issues/344#issuecomment-315523564

ov-dl commented 5 months ago

Hi Dennis,

Ik heb hetzelfde probleem met dsmr reader in docker (xirixiz/dsmr-reader-docker:latest). Debug output: DSMR-READER App | Python | Database v5.11 | v3.11.9 | postgresql BE sleep | DL sleep | Retention | Override 1.0s | 0.5s | 2232h | False Latest telegram version read | Parser settings "50" | "4"

DATA Telegrams total (est.) 2794775 Consumption records electricity | gas (est.) 213903 | 104914

POSTGRESQL SIZE OF LARGEST TABLES (> 500 MB) public.dsmr_datalogger_dsmrreading 1956 MB

Via homepage -> configuration -> inlog form, creds invullen -> Forbidden (403) CSRF verification failed. Request aborted. More information is available with DEBUG=True.

Melding is hetzelfde ongeacht of creds goed of fout zijn.

$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6562d6719152 xirixiz/dsmr-reader-docker:latest "/init" 10 minutes ago Up 10 minutes (healthy) 0.0.0.0:7777->80/tcp, :::7777->80/tcp, 0.0.0.0:7779->443/tcp, :::7779->443/tcp

Ik heb de volgende vars al geprobeerd door deze toe te voegen aan de docker-compose.yaml ("environment:" sectie onder 'dsmr'), maar zonder succes:

Als je meer info nodig hebt, let me know!

! EDIT: Hmm, kom er net achter dat ik zelf er een nginx proxy voor had gezet voor SSL. De foutmelding komt dus wanneer ik hem via nginx open. Als ik rechtstreeks ga (zonder nginx/ssl) dan krijg ik de foutmelding niet. Ik zal de komende dagen eens verder spitten.

Gr. Onno.

Dickey01 commented 4 months ago

Hallo Onno,

Heb hetzelfde probleem en config. Heb je het probleem al kunnen achterhalen?

Gr. Dick

dennissiemensma commented 4 months ago

@ov-dl

! EDIT: Hmm, kom er net achter dat ik zelf er een nginx proxy voor had gezet voor SSL. De foutmelding komt dus wanneer ik hem via nginx open. Als ik rechtstreeks ga (zonder nginx/ssl) dan krijg ik de foutmelding niet. Ik zal de komende dagen eens verder spitten.

Gezien de foutmelding:

You are seeing this message because this HTTPS site requires a “Referer header” to be sent by your Web browser, but none was sent. This header is required for security reasons, to ensure that your browser is not being hijacked by third parties.

If you have configured your browser to disable “Referer” headers, please re-enable them, at least for this site, or for HTTPS connections, or for “same-origin” requests.

Kun je kijken of je browser wel die header stuurt. Of dat er iets in je browser voorkomt dat het gestuurd wordt. Of dat Nginx die Referer header wel doorstuurt naar DSMR-reader.

the1rig commented 4 months ago

I'm running into the same issue, but then on the docker version for Homeasssistant. The same issue is open on the related git page: https://github.com/sanderdw/hassio-addons/issues/95

Dickey01 commented 4 months ago

Hallo Dennis,De referer wordt wel meegestuurd.Ik heb het vermoeden dat het is ontstaan na de laatste update.Groetjes Dick

dennissiemensma commented 4 months ago

Het wijst redelijk in de richting van dat de proxy iets anders doorstuurt dan wat Django (framework achter DSMR-reader) verwacht.

Hebben jullie dit al geprobeerd?

https://github.com/gophish/gophish/issues/2003#issuecomment-801160614

dennissiemensma commented 4 months ago

Het had ook nog dit kunnen zijn, via CSRF_TRUSTED_ORIGINS, zoals @ov-dl al aangeeft:

Echter gebruikt DSMR-reader v5.11 nog Django 3.2.

Daar zit die instelling al wel in, in oudere vorm, maar DSMR-reader ontsluit die (nog) niet. Het meegeven van die envvar doet niets. Alleen het hardcoded opnemen in de configs van DSMR-reader past hem aan.


Dus dat gaat overigens wel iets worden voor DSMR-reader v6.x, die een flinke stap maakt qua minimale versies en wel Django 4.x gaat gebruiken. Dus daar zal ik zorgen voor een envvar ter voorbereiding. Zodat CSRF_TRUSTED_ORIGINS in te stellen is. Want daar is die anders.

En wellicht nog iets voor de laatste DSMR-reader v5.12.

remb0 commented 4 months ago

Dat is goed nieuws dennis! kan ik mijn contracten weer aanpassen ;)

dennissiemensma commented 4 months ago

Voor de duidelijkheid: Ik weet niet zeker of het issue daar in zit.

Als je de bestanden van je DSMR-reader installatie kunt aanpassen, kun je proberen om CSRF_TRUSTED_ORIGINS in te stellen in een .env-bestand in de bovenste map van je installatie (bij native installaties). Waar ook deze staat: .env.template. En daarma ./reload.sh uitvoeren als dsmr user.

Voor Docker-installaties is het wat lastiger, omdat die envvar niet gemapped wordt. Maar wellicht is daar een .env bestand ook wel te maken (bestaat wellicht al), al zul je dan echt degene binnen de container moeten hebben en niet degene daarbuiten, die evt door Docker zelf gebruikt wordt.

Zie mijn vorige comment voor wat voorbeelden.