Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
4 tasks done
todool opened this issue Jun 14, 2024 · 11 comments
Open
4 tasks done
Assignees

Comments

@todool
Copy link

todool commented Jun 14, 2024

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

@todool todool changed the title Not able to vonfigure dmsr-reader Not able to configure dmsr-reader Jun 14, 2024
@dennissiemensma
Copy link
Member

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
Copy link
Member

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: #344 (comment)

@ov-dl
Copy link

ov-dl commented Jun 21, 2024

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:
- CSRF_TRUSTED_ORIGINS="https://192.168.200.251:7000,https://localhost:7000"
- DJANGO_USE_X_FORWARDED_HOST=true
- DEBUG=True

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
Copy link

Hallo Onno,

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

Gr.
Dick

@dennissiemensma
Copy link
Member

@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
Copy link

the1rig commented Jul 1, 2024

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: sanderdw/hassio-addons#95

@dennissiemensma dennissiemensma changed the title Not able to configure dmsr-reader Not able to configure dmsr-reader: CSRF verification failed. Request aborted. Jul 1, 2024
@Dickey01
Copy link

Dickey01 commented Jul 2, 2024 via email

@dennissiemensma
Copy link
Member

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?

gophish/gophish#2003 (comment)

@dennissiemensma
Copy link
Member

dennissiemensma commented Jul 2, 2024

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
Copy link

remb0 commented Jul 6, 2024

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

@dennissiemensma
Copy link
Member

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants