Domainberechtigung wird bei API nicht geprüft

Locked
User avatar
v3ng
Posts: 297
Joined: Wed 4. Jul 2018, 18:08

Domainberechtigung wird bei API nicht geprüft

Post by v3ng »

Hallo,

Beim anlegen einer Domain mittels der API ist mir aufgefallen, dass hier keinerlei Prüfung der Berechtigung stattfindet.
Der Nutzer könnte demnach eine Subdomain einer Domain anlegen, die einem anderen Nutzer gehört.

Wäre es möglich, auch hier den Check auszuführen?
Gerne auch mittels zusätzlicher flag oder setting.


Danke!
User avatar
Alexander
Keyweb AG
Posts: 3810
Joined: Wed 20. Jan 2016, 02:23

Re: Domainberechtigung wird bei API nicht geprüft

Post by Alexander »

Hallo,

Ich glaube hier liegt ein Verständnisproblem vor.

Man kann sowohl über die UI als auch über die API eine Subdomain (im Sinne der Domainhierarchie) auch anderen Benutzern zuweisen.
Hierbei klickt man beim Domain-Anlegeprozess als Admin nicht auf Domaintyp "Subdomain" sondern auf "Haupdomain".

Genau das passiert auch, wenn man über die API zum Beispiel folgenden Request absetzt. Beispiel:

benutzer_a:
- hat ID #23
- besitzt "test.de" (mit der ID #1)

benutzer_b:
- hat ID #24

Code: Select all

{
    "id_user": 24,
    "domain": "sub.test.de"
}
Jetzt besitzt benutzer_b eine Subdomain - im Sinne der Domainhierarchie - von benutzer_a.
Technisch kann er aber völlig frei darüber verfügen (wie bei einer Hauptdomain), hat eigene DNS Einstellungen etc.

Sieht dann so aus:
Bildschirmfoto_2021-10-06_09-07-08.png
Bildschirmfoto_2021-10-06_09-07-08.png (14.04 KiB) Viewed 2181 times
---

Wenn du jetzt eine tatsächliche Subdomain anlegen möchtest (sowohl hierarchisch, als auch technisch) die wirklich nur dem Besitzer der Hauptdomain gehört, dann musst in deinem Request noch "id_parent_domain" mit aufnehmen. Wenn "id_user" dann nicht zu "id_parent_domain" (also dem "id_user" der zur "id_parent_domain" gehörenden Domain) passen sollte, wird eine Fehlermeldung ausgegeben.

Code: Select all

{
    "id_user": 24,
    "domain": "sub-2.test.de"
    "id_parent_domain": 1
}

Code: Select all

{
    "code": "400 Bad Request",
    "message": "Invalid parent domain ID."
}
Wohingegen der folgende Request funktioniert.

Code: Select all

{
    "id_user": 23,
    "domain": "sub-2.test.de"
    "id_parent_domain": 1
}
=> Funktioniert
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
User avatar
v3ng
Posts: 297
Joined: Wed 4. Jul 2018, 18:08

Re: Domainberechtigung wird bei API nicht geprüft

Post by v3ng »

Hallo Alexander,

Danke dir für deine Ausführliche Antwort.

Ich stehe jedoch leider immer noch etwas auf dem Schlauch.
Folgendes ist mein Plan:

Ich integriere aktuell Keyhelp über die API in mein eigenes Dashboard.
Zwecks der Übersichtlichkeit und Verständnis für die Nutzer möchte ich die jeweiligen Optionen möglichst einfach halten.

Der Nutzer hat nun ein Inputfeld über dieses er eigenständig Domains hinzufügen kann.
Darüber soll er alle Domains hinzufügen können, bis auf Domains, die bereits einen anderen Besitzer haben.

Sprich, Besitzt Nutzer B die domain "mydomain.io", soll Nutzer A über das Inputfeld keinerlei Domains anlegen können, die auf "mydomain.io" endet.


Kann ich das so realisieren?
User avatar
Alexander
Keyweb AG
Posts: 3810
Joined: Wed 20. Jan 2016, 02:23

Re: Domainberechtigung wird bei API nicht geprüft

Post by Alexander »

Das kannst du sehr wohl realisieren. Allerdings nicht mit nur einem Request, sondern du brauchst vorher noch einen weiteren Request.

Hol dir am Besten vorher die Liste aller Domains mit "[GET] /domains", oder, wenn dein Benutzer nur Subdomains anlegen können darf, holst du dir alle Domains eines Benutzers "[GET] /clients/<BENUTZER-ID>/resources".

Anschließend schaust du in die Liste, wenn die Domain noch frei wäre, bzw. die übergeordnete Ebene der Domain keinem anderen User gehört, lässt du ihn die Domain anlegen.

Wenn es eine Subdomain sein soll, ermittelst du aus der Liste noch die dazugehörige Hauptdomain-ID und übergibst sie mit id_parent_domain.

---

Noch ein Hinweis. Hier einmal ein Beispiel wie die Domain IDs und id_parent_domain funktionieren. Egal wie viele Ebenen eine Subdomain tief ist, sie hat immer nur die oberste Domain als id_parent_domain. Sprich sub.domain.von.www.test.de hat also nicht die id_parent_domain von www.test.de, sondern die von test.de.

Code: Select all

ID	Name				ID_PARENT_DOMAIN
23	test.de	                	0
24	www.test.de           		23
25	sub.domain.von.www.test.de	23
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
User avatar
v3ng
Posts: 297
Joined: Wed 4. Jul 2018, 18:08

Re: Domainberechtigung wird bei API nicht geprüft

Post by v3ng »

Danke dir!

Dann werde ich vorher prüfen, ob die Domain bereits auf dem System vorhanden ist.
Spricht etwas dagegen, wenn ich alle Domains des Users als Hauptdomain anlege?
User avatar
Alexander
Keyweb AG
Posts: 3810
Joined: Wed 20. Jan 2016, 02:23

Re: Domainberechtigung wird bei API nicht geprüft

Post by Alexander »

Funktionieren tun beide genauso. Es macht es wahrscheinlich im KeyHelp dann schnell recht unübersichtlich, aber technisch spricht nichts dagegen.
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
User avatar
v3ng
Posts: 297
Joined: Wed 4. Jul 2018, 18:08

Re: Domainberechtigung wird bei API nicht geprüft

Post by v3ng »

Ich stehe bei dem Quota vor einem etwas ähnlichen Problem, da es ja aus der Admin Perspektive erfolgt, wird das User Quota beispielsweise bei den Domains oder Datenbanken nicht berücksichtigt.

Wäre es möglich eine Option zu implementieren, bei der das User Quota berücksichtigt wird?
Beispielsweise check_quota => 0/1

Es wäre natürlich möglich, im Voraus durch eine weitere Request das Quota zu prüfen, das ist Performancetechnisch allerdings etwas unschön und erzeugt unnötige Requests.


Danke!
User avatar
Alexander
Keyweb AG
Posts: 3810
Joined: Wed 20. Jan 2016, 02:23

Re: Domainberechtigung wird bei API nicht geprüft

Post by Alexander »

Du meinst mit Quota die Ressourcen-Limitierungen, z.B. "ein Nutzer darf maximal 5 Datenbanken haben"?

Falls ja, da gibt es bereits eine Option - Schau mal in die API-Optionen ;)

"Ressourcenbegrenzungen von Benutzerkonten ignorieren" -> Haken raus -> Fertig
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
User avatar
OlliTheDarkness
Posts: 1854
Joined: Tue 14. Aug 2018, 16:41
Location: Essen (NRW)

Re: Domainberechtigung wird bei API nicht geprüft

Post by OlliTheDarkness »

Unbenannt.png
:P
Mit freundlichen Grüßen
OlliTheDarkness

**************************************************************
Helden leben lange, Legenden sterben nie

:!: World Hack Organization :!:
**************************************************************
User avatar
v3ng
Posts: 297
Joined: Wed 4. Jul 2018, 18:08

Re: Domainberechtigung wird bei API nicht geprüft

Post by v3ng »

Alexander wrote: Mon 11. Oct 2021, 17:10 Du meinst mit Quota die Ressourcen-Limitierungen, z.B. "ein Nutzer darf maximal 5 Datenbanken haben"?

Falls ja, da gibt es bereits eine Option - Schau mal in die API-Optionen ;)

"Ressourcenbegrenzungen von Benutzerkonten ignorieren" -> Haken raus -> Fertig
Huch, das habe ich ja garnicht gesehen :)

Bei Datenbanken funktioniert die Option super, Domains kann der Nutzer aber auch nach erreichen seines Kontingents anlegen.

Edit: Insofern ich mich nicht irre, wird keine Message zurückgegeben, weshalb die Datenbank nicht angelegt werden kann, wäre es möglich hier auszugeben, dass der Nutzer kein Quota mehr hat?
User avatar
Alexander
Keyweb AG
Posts: 3810
Joined: Wed 20. Jan 2016, 02:23

Re: Domainberechtigung wird bei API nicht geprüft

Post by Alexander »

Domains laufen leider etwas anders bzw. bedürfen einer gesonderten Betrachtung.
Ohne es jetzt näher ausführen zu wollen, wird eine Änderung bei diesem Punkt leider dazu führen, das 90% der anderen Nutzer wahrscheinlich Probleme beim Anlegen über die API aufgrund dessen bekommen würden.

Ich lege dir daher eher den zusätzlichen Request nahe. Du kannst das Ergebnis natürlich auch cachen.
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
User avatar
v3ng
Posts: 297
Joined: Wed 4. Jul 2018, 18:08

Re: Domainberechtigung wird bei API nicht geprüft

Post by v3ng »

Betrifft das nur die Domains?

Dann werde ich das über den vorherigen request lösen, danke
User avatar
Alexander
Keyweb AG
Posts: 3810
Joined: Wed 20. Jan 2016, 02:23

Re: Domainberechtigung wird bei API nicht geprüft

Post by Alexander »

Ja, Domains wäre der einzige Fall.
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Locked