[PHP/MYSQL] 2 grundlegende Prinzipfragen

BartTheDevil89

Devilution Media
ID: 87739
L
2 Mai 2006
3.960
103
Hallo,

für zwei Projekte habe ich derzeit 2 grundlegende Fragen, die bei mir im Raum stehen:

1. eine Downloadfunktion:
Ich möchte in ein CMS ein Downloadsystem einbauen. Also ich trage Daten ein, zu denen jeweils eine Datei gehört. Jetzt aber die Frage, wie ich steuere, dass wirklich nur ein berechtigter User die Datei downloaden kann.
Meine Idee war jetzt: Ich speichere alle Dateien in einem Ordner. (Wie am besten schützen?). Dann gibts ein System was eben wenn erlaubt den Downloadlink für den User anzeigt. Wenn darauf klickt, kommt eine neue Seite, die eigentlich nur eine Aufgabe hat: Nochmals überprüfen, ob der User der User downloaden darf und wenn ja aus dem geschützen Ordner den Download dieser Datei starten. Aber wie schaffe ich es beispielsweise, dass der Ordner richtig geschützt ist, das Script allerdings trotzdem von dort den Download starten kann und der User dann auch wirklich nur diese eine Datei downloaden kann?

2. ein CMS:
Ich würde gern ein CMS aufsetzen mit Componenten, etc. später...allerdings bin ich derzeit bei dem Basismodul, was viele grundsätzliche Frage stellt: Auf was setzen? Lieber die speziellen Daten in ner Datenbank speichern oder in Dateien? Session-System? Template-System? Menü mit unendlich Ebenen, wie umsetzen?
Also stehe vielen Fragen gegenüber und suche derzeit einen Anfang. Gibts eventuell wirklich gute Tutorials, etc. wo man mal schauen könnte, wie die sowas alles lösen? Was würdet ihr empfehlen?
 
Den Ordner schützt du mit .htaccess:
Code:
order deny, allow
deny from all
D.h. da kommt niemand ran außer deinem Script.

Das Script selber macht einfach nur:
PHP:
if(!check_if_authorized($file))
{
  header($_SERVER['SERVER_PROTOCOL']. "403 Forbidden");
  exit;
}

$content_type = get_content_type($file);
header("Content-Type: $content_type");
header("Content-Disposition: attachment; filename=$file");
readfile("secret_folder/$file");
exit;
 
2. ein CMS:
Ich würde gern ein CMS aufsetzen mit Componenten, etc. später...allerdings bin ich derzeit bei dem Basismodul, was viele grundsätzliche Frage stellt: Auf was setzen? Lieber die speziellen Daten in ner Datenbank speichern oder in Dateien? Session-System? Template-System? Menü mit unendlich Ebenen, wie umsetzen?
Also stehe vielen Fragen gegenüber und suche derzeit einen Anfang. Gibts eventuell wirklich gute Tutorials, etc. wo man mal schauen könnte, wie die sowas alles lösen? Was würdet ihr empfehlen?

Die Aufgabe eines CMS ist doch, genau diese Fragen zu beantworten. Alles hat Vor- und Nachteile. Du solltest dir überlegen, was du erreichen möchtest, und dann darauf hinarbeiten. Wenn du auf mehrere Lösungswege zum erreichen eines deiner Ziele stößt, kannst du das nehmen, musst du abwägen.

Was du brauchst sind keine Tutorials, sondern erstmal nen Lastenheft/Pflichtenheft/Anforderungsanalyse. Das ganze kann sehr theoretisch werden, wenn du aber nur als Hobby nebenbei was coden möchtest, würde ich sagen, du schreibst paar Seiten zusammen, was du erreichen möchtest. Bevor du dir klar bist, was dein CMS leisten soll, machen deine obigen Fragen nämlich keinen Sinn ;)

PlaciD
 
Den Ordner schützt du mit .htaccess:
Code:
order deny, allow
deny from all
D.h. da kommt niemand ran außer deinem Script.
Muss dich leider nochmal fragen, wie du das meinst. Denn einfach mit dem Inhalt ne .htaccess rein bringt mir ne misconfiguration-meldung.

Und dann hab ich damit ein Problem:
$content_type = get_content_type($file);

Denn ich bekomm jetzt die Meldung, dass es eine "Fatal error: Call to undefined function: get_content_type()"-Funktion ist. Hab jetzt mal über google befragt aber da komm ich auch nicht mit weiter.

Die Aufgabe eines CMS ist doch, genau diese Fragen zu beantworten. Alles hat Vor- und Nachteile. Du solltest dir überlegen, was du erreichen möchtest, und dann darauf hinarbeiten. Wenn du auf mehrere Lösungswege zum erreichen eines deiner Ziele stößt, kannst du das nehmen, musst du abwägen.

Was du brauchst sind keine Tutorials, sondern erstmal nen Lastenheft/Pflichtenheft/Anforderungsanalyse. Das ganze kann sehr theoretisch werden, wenn du aber nur als Hobby nebenbei was coden möchtest, würde ich sagen, du schreibst paar Seiten zusammen, was du erreichen möchtest. Bevor du dir klar bist, was dein CMS leisten soll, machen deine obigen Fragen nämlich keinen Sinn ;)

PlaciD

Ja das weiß ich, aber dachte halt es gibt gute Tutorials, die man sich mal anschauen kann um herauszufinden um sich Ideen zu holen.
 
Zuletzt bearbeitet:
Wenn du ein CMS willst, dann solltest du eins der vorhandenen nehmen. Es gibt einige frei verfügbare. Der Aufwand, sowas selber zu entwickeln ist enorm. Einfach riesig. Und da es schon sehr gute Sachen fertig und kostenlos gibt, macht es relativ wenig Sinn, sich sowas selber stricken zu wollen.

Es sei denn, du hast ganz ganz spezielle Anforderungen, die kein CMS (auch nicht mit Erweiterungen) erfüllen kann.
 
Fehlermeldung ?
Die Funktion ist erfunden. Du musst an dieser Stelle eben den content-type bestimmen.

Fehlermeldung ist, dass eben der Server Misconfiguriert wird! Also das ist ne weiße Seite mit der Meldung, sobald ich eine Datei im Ordner aufrufe. Wie muss denn die htaccess genau ausschauen?
Dachte, dass es vielleicht ne neue Funktion wäre oder eine die du dir selbst geschrieben hättest^^...aber werde es dann selbst machen.

Wenn du ein CMS willst, dann solltest du eins der vorhandenen nehmen. Es gibt einige frei verfügbare. Der Aufwand, sowas selber zu entwickeln ist enorm. Einfach riesig. Und da es schon sehr gute Sachen fertig und kostenlos gibt, macht es relativ wenig Sinn, sich sowas selber stricken zu wollen.

Es sei denn, du hast ganz ganz spezielle Anforderungen, die kein CMS (auch nicht mit Erweiterungen) erfüllen kann.

Doch es gibt natürlich CMS, aber genau von denen möchte ich weg! Denn hab jetzt 4 CMS durch und trotz aller Sicherheitsfeatures, aktueller Versionen, etc. wurde meine Page schon mehrfach gehackt! Deswegen muss in meinen Augen endlich was eingenes her...
 
Ich würde an deiner Stelle mal versucher herauszubekommen, warum das so ist.

Kann ja net sein, dass andere CMS erfolgreich und ohne Probleme einsetzten und es nur bei dir immer Probleme gibt.
 
mime_content_type() könnte Dir wohl weiterhelfen...

Ja hab es schon hinbekommen...is ne feste Contentart und hab da halt gleich den Wert eingetragen.

Ich würde an deiner Stelle mal versucher herauszubekommen, warum das so ist.

Kann ja net sein, dass andere CMS erfolgreich und ohne Probleme einsetzten und es nur bei dir immer Probleme gibt.

Diese Frage habe ich die letzten Jahre mir oft gestellt und auch insgesamt 5 verschiedene CMS versucht. Deswegen setz ich jetzt auf was eigenes....:p
 
Meinst du nicht, dass du selbst es nicht unbedingt besser machen kannst, wenn du nicht mal rausbekommst, was das Problem bei den anderen CMS ist?

Vielleicht hast du ne unsichere Serverconfig oder sonst was, mich würde das an deiner stelle interessieren.
Denn wenn das so ist, hilft dir auch ein eigenes System nicht - zumal ein CMS welches oft verwendet wird, besser getestet ist.
 
Denn wenn das so ist, hilft dir auch ein eigenes System nicht - zumal ein CMS welches oft verwendet wird, besser getestet ist.

Ja, aber das auch offen zugänglich und kann daher leichter gehackt werden und ist auch deswegen öfters ziel einer Attacke. Vorallem werden bekannte Bugs etc. veröffenlticht...
Da hilft eigentlich immer nur up2date zu sein.

Hacker z.b. googlen einfach dann nach Copyright xyz-Script und haben dann direkt ein Ziel
 
Naja aber eigentlich kann es daran allein net liegen, wenns immer bei ihm passiert. Irgend was ist dann doch faul.
 
Beispiel habe ich genannt, vielleicht nicht up2date? Naja wenn einer ihn auf'n kieker hat, dann wird er natürlich gucken welches CMS er hat und ob da Sicherheitslücken bekannt sind...
 
Also wenn du unbedingt ein CMS selber bauen willst, dann nimmt man sicherlich Datenbanken. Und an Sessions wirst du auch nicht vorbeikommen. Ein Template-System brauchst du nur, wenn du auch mit verschiedenen Templates arbeiten willst. Wenn nicht, dann kannst du das Aussehen relativ fest einbauen.

Wenn du ein dynamisches Menü mit mehreren Ebenen haben willst, dann muss jedes Menüelement ein "parent" haben, also ein Elternelement. Der parent der Elemente aus der obersten Ebene ist 0. In der obersten Ebene sind dann z.B. die Elemente 1, 2 und 3. Und wenn du jetzt dem Element 4 als parent den Wert 1 gibts, dann ist es da das Unterelement. Und so weiter.
Damit kannst du undendlich viele Ebenen umsetzen (wobei man nicht mehr als 3 oder 4 Ebenen machen sollte) und die Abfrage ist mittels SQL ziemlich einfach.
 
Fehlermeldung ist, dass eben der Server Misconfiguriert wird! Also das ist ne weiße Seite mit der Meldung, sobald ich eine Datei im Ordner aufrufe. Wie muss denn die htaccess genau ausschauen?


Der Fehler ist leider immernoch nicht gelöst....wie würde denn die htaccess bei dir genau ausschauen? :roll:

Zum Thema CMS nochmal: Ja ich konnte auch genau sehen, wie geziehlt über google nach dem Copyright gesucht wurde und kurz darauf war es schon tot...das Proble ist halt einfach der Open-Source-Code...denn dadurch sind Lücken sofort publik und werden direkt ausgenutzt. Da ist meist das Update noch garnicht raus, da ist schon der Hacker dagewesen.
Es gibt für die großen CMS mittlerweile sogar direkt fertige Hacker-Dateien in Hackerforen, die nurnoch configuriert werden müssen, auf die Zielseite geändert und schon gehts los. So wurde mir damals ein Joomla (aktueller Stand, da 2 Tage vorher erst komplettes Update gemacht) platt gemacht...und deswegen werde ich mich da auch dransetzen, dass ich da was eigenes hinbekomm. :p
 
Der Fehler ist leider immernoch nicht gelöst....wie würde denn die htaccess bei dir genau ausschauen? :roll:
Ich hatte doch schon mal nach der Fehlermeldungen gefragt und sie nicht bekommen :roll:
Hab jetzt grade die .htaccess bei mir eingebaut und mir die Fehlermeldung selber geholt:
D:/Webserver/root/.htaccess: order takes one argument, 'allow,deny', 'deny,allow', or 'mutual-failure'
Ein überflüssiges Leerzeichen is dran schuld.
[...]das Proble ist halt einfach der Open-Source-Code...denn dadurch sind Lücken sofort publik und werden direkt ausgenutzt.
Ein anderes Problem is aber das:
Wenn an Open-Source-Software viele mitarbeiten und es trotzdem Sicherheitslücken gibt, glaubst du dann, dass du allein eine Software schreiben kannst, die 100%ig sicher is ?
Gut, du hast den Vorteil, dass bei dir wohl nicht so danach gesucht werden wird.
 
Ich hatte doch schon mal nach der Fehlermeldungen gefragt und sie nicht bekommen :roll:
Hab jetzt grade die .htaccess bei mir eingebaut und mir die Fehlermeldung selber geholt: Ein überflüssiges Leerzeichen is dran schuld.
Ein anderes Problem is aber das:
Wenn an Open-Source-Software viele mitarbeiten und es trotzdem Sicherheitslücken gibt, glaubst du dann, dass du allein eine Software schreiben kannst, die 100%ig sicher is ?
Gut, du hast den Vorteil, dass bei dir wohl nicht so danach gesucht werden wird.

Danke, werde es dann nochmal damit probieren, bin grad nicht daheim...ja hab eben die Erfahrung gemacht, dass es sich für Hacker garnicht lohnt unbedingt ein einzelnes System anzugreifen. Denn die großen CMS bringen nach einem erfolgreichen Angriff natürlich gleich 100.000 neue Opfer, die einfach über google auffindbar sind. Allein schon deswegen wird es sich lohnen auf was eigenes zu setzen, auch wenn es natürlich mit Sicherheit nicht so gut wird, wie ein Open-Source an dem zig Menschen mitarbeiten. :roll:;)
 
Oh man, wenn jeder so denken würde, würden wir noch in der Steinzeit leben.
Ich bezweifle mal, dass du ein System so sicher wie OpenSource hinbekommst, und selbst wenn die mal nen Fehler haben, sind die schnell gefixed. Und das Copyright zu ändern hat schon oft geholfen, Wortfolge etc
 
Wenn es nur ums Copyright geht, reicht es ja, dieses durch zusätzliche Tags oder auch durch JavaScript umzuschreiben, sodass du kein typisches CMS mehr hast, wo die Cracker-Scripte wirken.