Moin,
ich nutze die Share-Api zur Freigabe von Dateien.
Allerdings sind die 15-stelligen Tokens eindeutig zu lang.
Können die irgendwo eingestellt (Länge etc.) werden ?
Es gibt zwei Apps zum Umbenennen von Freigabelinks:
- ShareRenamer (sharerenamer)
- Configurable Share Links (cfg_share_links)
2.) nutzt die neueste API und bietet etwas mehr Funktionen als 1.)
Es kann aber nirgendwo die Länge der Token eingestellt werden, es muss bei jeder Freigabe eines generiert werden.
Soweit danke erstmal.
Das IMMER ein Token generiert werden muss is klar.
Aber 15 Zeichen lang ?
Wir haben ein Portal auf NC wo in einem Unternehmen Daten auf einem Server emofangen und aufbereitet werden und dann via SFTP hochgeladen werden und ein Automatisches Zufallspasswort sowie eine URL generiert wird.
Nun ist es einigen Endusern zu umständlich eine solch lange URL vom Ausdruck der Zugangsdaten im Browser einzugeben (Eben diese 15 stellen).
Daher die Frage, ev. gibts die Möglichkeit die URL zu shrinken (Es ist kein externer Anbieter erlaubt) damit die generierte URL “überschaubar” bleibt ?
Wie? Die geben das von Hand ein?
Dafür gibt es von Anbeginn des Digital-Zeitalters schon Copy&Paste!
Das habe ich doch oben beschrieben!
Du kannst aber auch ein Skript schreiben, der die URL nach deinen Vorgaben mit einem randomisierten Token in der von dir bevorzugten Länge generiert, der das dann automatisiert in der Datenbank bei jedem neu generierten Share anpasst. Das ist kein großes Hokus Pokus, das kann jeder mit ein Wenig Kenntnissen in Shell-Skripting und SQL bauen.
Ich habe auf einem weiteren Webserver eine Art PHP-URL-Shortener auf Basis einer CSV-Datei mit Datensätzen aus Kurz-URL und Nextcloud-Share.
Ok, also über nen eigenen shortener, wie rufst du die auf wenn du nen Links generiert hast via API ?
Copy&Paste : Nunja, wenn der Kunde nur einen Zettel in die Hand gedrückt bekommt geht das halt nicht anders.
Ist mehr eine Bookmarkliste, die ich manuell in die CSV kopiere. Das PHP nutzt 301-Redirect auf die Nextcloud-URL.
Bei wenigen und statischen URL könnte man auch direkt Rewrite in .htaccess auf einem eigenen virtuellen Webserver verwenden.
Wie wäre es mit QR-Codes zum scannen? Oder Gäste-App mit E-Mail zur Anmeldung?
Ich halte 15 Zeichen auch für zu lang. Sind schon ziemlich viele Möglichkeiten. Passwort brauchst du dann nicht wirklich. Vor allen wenn du Link und Passwort über den gleichen Weg überträgst. Aber Shares bei Microsoft 365 sind schlimmer. Die tippt niemand ab.
die letzte Aussage (die ^^ hier) muss ich revidieren.
Die Länge der Token wird in der Datei
“lib/private/Share/Constants.php”
definiert. Ziemlich weit unten in dieser Zeile:
public const TOKEN_LENGTH = 15; // old (oc7) length is 32, keep token length in db at least that for compatibility
Ich habe es auch schon ausprobiert. Kürzen geht, wird unmittelbar übernommen.
Es muss aber nach jedem Update von Neuem gesetzt werden.
Nun habe ich ein kleines Script geschrieben für dich, damit lässt sich das wunderbar anpassen ohne jedes Mal tief in den Dateien eintauchen zu müssen.
Installiere das Skript so:
sudo wget -P /usr/local/bin https://global-social.net/apps/raw/s/nc-sharetoken-length
sudo chmod +x /usr/local/bin/nc-sharetoken-length
Das Skript geht davon aus, dass Nextcloud im Verzeichnis
/var/www/nextcloud
installiert ist.
Wen dem nicht so ist, dann muss das mit folgendem Befehl entsprechend abgeändert werden:
# Die erste Zeile entsprechend anpassen und dann beide Zeilen ausführen:
nc_path=/your/path/to/nextcloud
sudo sed -i "s#'/var/www/nextcloud'#'$nc_path'#" /usr/local/bin/nc-sharetoken-length
Danach einfach das Skript in der Konsole aufrufen, entweder als root (mit sudo) oder als den Webserver-User:
sudo nc-sharetoken-length
es fragt nach, was es tun soll und kann eigentlich nichts kaputt machen:
~# nc-sharetoken-length
This script looks up for the hardcoded sharetoken length on your nextcloud
server instance and gives you the means to change it.
The actual sharetoken length is set to 15
which results in
768,909,704,948,766,668,552,634,368
different possible variations
Enter new value (keep empty for no change): 2
The token length must be at least 4, as this is specified in
the min_token_length variable in line 19 of this script.
Set token length to 4? That would results in
14,776,336
different possible variations
Please confirm with y or accept the default rejection: [y/N]
Super, ich danke dir.
Werde ich morgen gleich im Testsystem ausprobieren und mich dann wieder melden.
THX
Es ist tatsächlich ein QR-Code mit aufgedruckt.Sowie die (derzeit zu Lange URL) und ein zufällig generiertes Passwort und Verfallsdatum.
Dieses wird fein säuberlich aufbereitet und ausgedruckt.
Das Problem ist das wir dieses generierte Zugangspaket keinesfalls per Email senden dürfen und unser Klientel größtenteils doch etwas älter ist, also nicht ganz so umgänglich mit dem Internet und IT-Geräten aber das wird sich schleichend in den nächsten Jahren ändern, außerdem hat der “Kunde” die Wahl diese Daten als Online-Zugang oder via CD zu bekommen. Das Ziel ist das wir wegkommen wollen von der CD/DVD Erstellung da die Massen an Rohlingen sowie die Brennroboter unwahrscheinlich teuer sind. Wir haben ein große Testumgebung sowie bereits einige aktive Nextcloud-Server im LAN die andere Daten verschlüsselt bereitsstellen (Hardware Firewall-Cluster natürlich davor) sowie einige V-Server bei Dienstleistern mit Rechenzentrum in der BRD. Wir entwickeln ja nicht nur ausschließlich Software sondern administrieren (Sind ein Team in der IT) das HA-Cluster Server & Netzwerksystem.
DAS wäre natürlich idealer, da wir einige eigene V-Server im I-Net betreiben haben wir da vollen Zugriff drauf.
Das mit dem Token-Einstellen scheint ja schnell gemacht zu sein.
THX
Ich würde nicht so tief in Nextcloud ändern. Spätestens einer Sicherheitsbewertung hält diese Idee nicht stand, da sie in Nextcloud direkt in eine eigentlich nicht konfigurierbare Komponente eingreift.
Das Problem ist das wir dieses generierte Zugangspaket keinesfalls per Email senden dürfen
Schick doch den Link per E-Mail und nur das Passwort per Brief. Ist auch wirklich sicher durch zwei Kommunikationswege. Kannst die Shares auch durchnummerieren und bei Facebook für die alten Leute öffentlich posten. Oder bei Twitter oder Mastodon. Passwort dann per Brief.
Klar du hast recht …
Wir sind im Medizinwesen unterwegs (Radiologie).
Per Post senden ist auch genau das wovon wir weg sollen und wollen da der Patient ja direkt vor Ort ist, dieser Mix aus Sicherheit und Handhabbarkeit ist echt eine Blutgrätsche.
Natürlich werden wir überpüft (Software), da kann das durchaus zum Thema werden aber dort soll dann der Prüfer sagen wie es handbar und technisch machbar ist in dieser Konstellation.
Angedacht war ursprünglich das die Zugangsdaten über eine Schnittstelle zur Generierungszeit direkt mit dem Befund ausgedruckt wird, da sind wir schon an der Prüfung gescheitert da diese Daten dann im RIS (Radiologisches Informationssystem) für jederman sichtbar ist, Vorgabe war dann “Nur dem Patienten dürfen diese Daten bekannt sein”, also generieren wir eine Freigabe (NC Token war der Prüfer mit einverstanden) und ein zufällig generiertes Passwort (War der Prüfer auch mit einverstanden), nur ein Andruck auf dem Befund wurde abgelehnt.
Die Sorge kann ich dir gleich nehmen. Du kannst es vergleichen mit der individuellen mime-type Behandlung und die Verwendung eigener Themes im themes Ordner, die mittels
occ maintenance:mimetype:update-js
auch Veränderungen tief im System vornimmt, die einem
occ integrity:check-core
nicht standhalten.
Da jedoch nach einem Update die Werte wieder auf Standard gesetzt sind und eigentlich nur dann ein integrity-check vom System durchgeführt wird, fällt das nicht ins Gewicht und settings/admin/overview wird das weiterhin nicht anmeckern wenn das im Anschluss abgeändert wird. Sollte irgendwann dann doch außerplanmäßig ein Check durchgeführt werden, dann muss mann eben
- den Wert wieder auf 15 setzen
-
occ integrity:check-core
ausführen - den Wert wieder auf Wunschlänge setzen
Genauso ist das mit der individuellen Mimetype/themes Handhabe, da muss in so einen Fall auch
- die Datei core/js/mimetypelist.js wieder auf den Ursprungszustand zurückgesetzt werden (entweder aus einem Backup oder von github)
-
occ integrity:check-core
ausgeführt werden
um settings/admin/overview zum schweigen zu bringen.
Ich habe mir diese Schritte längst auch schon alle in bash aliase verskriptet, damit alles immer mit einem Klick aufgeräumt ist.
Geht alles. Ich würde aber statt Nextcloud den Ablauf optimieren. Vielleicht langer Link und auch als QR-Code. Ist bei einigen Überweisungen nicht anders und IBANs sind auch lang.
1A, funktioniert.
Vielen Dank.
Hast du dir auch das Skript dazu installiert, damit du es jederzeit wieder setzen bzw. zurücksetzen kannst falls der Integrity Check es mal anmeckern sollte wie ich beschrieben habe?
Erst mit dem Skript ist es eine stabile Lösung, die gewährleistet, dass die Datei auch nicht kaputt geht durch falsches editieren und auch nach einem Update immer sofort wieder umgestellt werden kann, ohne lange suchen zu müssen
Moin,
hab ne eigene Routine geschrieben und in nen Cron-Job gepackt der jede Nacht nachschaut ob der Eintrag noch da ist.
Gruß