Page 1 of 2
Vorschau für künftigen Eintrag
Posted: Sat Dec 04, 2010 4:03 pm
by Timbalu
Hi
Folgendes kleines Problem kam mir gerade unter. Ein zukünftiger Eintrag ist erstellt. Die Vorschau in der Artikelübersicht öffnet eine neue Seite mit einem Fehler:
Serendipity erstellt die Vorschau des Eintrags ...
Ihr Browser hat keinen gültigen HTTP-Referrer übermittelt. Dies kann entweder daher kommen, dass Ihr Browser/Proxy nicht korrekt konfiguriert ist, oder dass Sie Opfer einer "Cross Site Request Forgery (XSRF)" waren, mit der man Sie zu ungewollten Änderungen zwingen wollte. Die angeforderte Aktion konnte daher nicht durchgeführt werden.
Die Vorschau bei geöffnetem Artikel klappt aber ohne Probleme.
Ian
Re: Vorschau für künftigen Eintrag
Posted: Sat Dec 04, 2010 4:22 pm
by onli
Möchte den Bug bestätigen, das kommt in meinem Blog mit s9y 1.5.4 auch immer.
Re: Vorschau für künftigen Eintrag
Posted: Mon Dec 06, 2010 11:34 am
by garvinhicking
Hi!
Hrm, das ist schwieriger zu beheben; das Backend greift für die Ansichtserzeugung auf die Frontendfunktionalität zu, die wiederum stellt per timestamps sicher das ein zukünftiger eintrag niemals eingesehen werden kann. Man müsste das für das Backend aufheben, aber ohne die Sicherheit zu verlieren.
Muss ich mir in Ruhe einmal ansehen...
Grüße,
Garvin
Re: Vorschau für künftigen Eintrag
Posted: Thu Dec 16, 2010 5:05 pm
by Timbalu
Warum nicht per GET serendipity['preview']=1 und mit $is_logged_in validieren?
Ian
Re: Vorschau für künftigen Eintrag
Posted: Fri Dec 17, 2010 1:48 am
by garvinhicking
Hi!
Es gibt ja Blogs die einen Frontend-Login für Kommentatoren benötigen, bei denen würden dann derartige Einträge einsehbar sein...
Grüße,
Garvin
Re: Vorschau für künftigen Eintrag
Posted: Sun Jan 08, 2012 2:07 pm
by Timbalu
Hi Garvin
Tatsächlich hattest du ja jetzt massig Zeit zum nachdenken....
Sind wir da einer Lösung schon näher, als es auch in der 1.7 Alpha noch nicht klappt?
Ich bin gerade wieder darüber gestolpert, als ich diese Ansichten in Dashboard getestet habe.
Der Fehler entsteht bei Drafts und Futures.
Villeicht könnte man statt auf das Frontend zuzugreifen lieber ein POPup Fenster mit ner einzelnen query Abfrage realisieren?
Re: Vorschau für künftigen Eintrag
Posted: Mon Jan 09, 2012 3:52 pm
by garvinhicking
Hi!
Ich glaube die Sache ist mir zu komplex und zu wenig wichtig um hier so viel Zeit reinzustecken wie eventuell nötig wäre, und fürchte ich kann da selber nicht viel helfen. IMHO ist es wichtiger, keine "zukünftigen Einträge" an unbefugte Nutzer rauszugeben als die Vorschau direkt per Button auslösen zu können.
Ich denke daher am sinnvollsten wäre es, "zukünftigen Einträgen" keinen Vorschau-Button mitzugeben in der Übersicht, oder?
Der Frontend-Zugriff ist notwendig damit überhaupt der ganze Eintrag mit allen Hooks, Darstellungsoptionen etc. ausgeführt werden kann.
Grüße,
Garvin
Re: Vorschau für künftigen Eintrag
Posted: Mon Jan 09, 2012 4:07 pm
by onli
ich würde es nochmal probieren wollen. Timbalus vorschlag von oben aufgreifend: wenn man prüft, ob der nutzer die rechte zum eintrag-erstellen hat, sollte das dann nicht reichen? Wenn du da nicht direkt ein problem siehst, würde ich das nachher testen.
Re: Vorschau für künftigen Eintrag
Posted: Mon Jan 09, 2012 4:36 pm
by Timbalu
Ich verstehe den Zusammenhang mit dem Frontend-Login für Kommentatoren noch nicht ... Heißt das diese sehen Backend Funktionalitäten im Frontend, speziell den preview link für drafts und futures?
Ansonsten müsste es doch eine Möglichkeit geben, die function serendipity_checkXSRF() für den gewünschten Fall zu verändern... auf $is_logged_in ist ja schon bei Aufruf gechecked, ggf. müsste man dieses dort nur noch auf ADMINGROUP scharf stellen.
Re: Vorschau für künftigen Eintrag
Posted: Mon Jan 09, 2012 6:43 pm
by Timbalu
Wahrscheinlich ist das auch einfach nur ein Namenswirrwarr...
Die 'Vorschau' gibt es ja in der Entryübersicht als Backend LINK, der ins frontend verweist und dort existierende Einträge aufruft und anzeigt. Dort werden und dürfen natürlich auch nur Einträge dargestellt werden, die auch dargestellt werden können. So weit, so klar.
Ich würde mich in der Übersicht und auch im Dashboard mit dem admin 'Vorschau' iframe begnügen wollen, dass durch den input type button 'VORSCHAU' im Formfeld eines jeden Entries bereitgestellt wird. Da können natürlicherweise alle gespeicherten Einträge, also auch Drafts und Futures, dargestellt werden, ohne einen XSRF zu provozieren.
Den Link müsste man also iim Falle von Drafts und Futures so umschreiben, dass daraus das Verhalten des Input buttons 'Vorschau' wird, möglichst in einem Popup.
Kommen wir der Sache so vielleicht näher?
Re: Vorschau für künftigen Eintrag
Posted: Tue Jan 10, 2012 3:39 pm
by garvinhicking
Hi!
Auf Eintrag erstellen Rechte zu prüfen dürfte auf jeden FAll ok sein, das ist eine gute Idee.
Nur "ob eingeloggt" reicht halt nicht, da hier auch Leute dann Artikel sehen könnten die eigentlich garkeine Rechte haben.
Grüße,
GArvin
Re: Vorschau für künftigen Eintrag
Posted: Wed Jan 11, 2012 5:28 pm
by onli
Hi
Ich glaube, das hängt gar nicht alleine mit dem Datum zusammen, sondern ist ein echter Bug. Und in einem Bereich, an den ich mich nicht einfach so rantraue. Die XSRF-Warnung kommt, weil in Zeile 2035ff von functions_config.inc.php auf Vorhandensein eines form-tokens geprüft wird:
Code: Select all
$token = '';
if (!empty($serendipity['POST']['token'])) {
$token = $serendipity['POST']['token'];
} elseif (!empty($serendipity['GET']['token'])) {
$token = $serendipity['GET']['token'];
}
if (empty($token)) {
if ($output) echo serendipity_reportXSRF('token', false);
return false;
}
Der token ist natürlich nicht gesetzt, da auf die Vorschau ja nicht über das Formular, sondern über den Vorschau-Link zugegriffen wird. Einfach in den Link als GET-Parameter einbauen?
Schien mir allerdings jetzt beim ersten Testen so, als ob auch unter Umgehung dieses Schutzes die Vorschau nicht geladen wird. Das wiederum kann natürlich am Datum liegen (bzw. an den fehlenden Rechten).
Gruß
Re: Vorschau für künftigen Eintrag
Posted: Wed Jan 11, 2012 5:53 pm
by garvinhicking
Hi!
Ich kann mich an die Ecke des Codes nicht so gut erinnern, aber die Token-Schützung ist eigentlich nur dafür da, wenn eine Aktion ausgeführt wird die Daten manipuliert. Preview zeigt ja nur an, da braucht man also eigentlich auch kein Token, d.h. wir könnten den Backendworkflow so anpassen dass ein Token hier garnicht erst geprüft werden soll. Das muss aber dann per interner s9y variablenübermittlung laufen, nicht über GET- oder POST-Parameter die dann jemand faken könnte.
Grüße,
Garvin
Re: Vorschau für künftigen Eintrag
Posted: Wed Jan 11, 2012 7:21 pm
by Timbalu
Oh ich vergaß!
Ich habe das für mich vorerst so hinbekommen:
Code: Select all
<li><a target="_blank" href="{$edraft.link}" onclick="document.forms['serendipityEntry'].elements['serendipity[preview]'].value='true';" title="{$CONST.VIEW} #{$edraft.id}" class="serendipityIconLink"><img src="{serendipity_getFile file="admin/img/zoom.png"}" alt="{$CONST.VIEW}" />{$CONST.VIEW}</a></li>
Es fehlte nur das
Code: Select all
onclick="document.forms['serendipityEntry'].elements['serendipity[preview]'].value='true';"
Re: Vorschau für künftigen Eintrag
Posted: Thu Jan 12, 2012 10:58 am
by garvinhicking
Hi!
Äh, wo hast Du das genau gemacht? In der Übersicht gibt's doch garkein serendipity[preview] input element, inwiefern könnte das hier helfen?
Grüße,
Garvin