2010-11-28 24 views
2

Ist es in Ordnung, jede Anfrage von der Kommandozeile aus vollständig zu autorisieren?Sicherheit über die Befehlszeile: Ist das eine gute Idee? (PHP)

Meine Idee war, diese Prüfung zu machen:

if(isset($_SERVER['argc']) AND $_SERVER['argc']>=2) { 
    // it must be the admin, give him full authorization, no further checks needed. 
} else { 
    // normal web request, authentication needed. 
} 

Does this Sinn?

Alles andere, was ich wissen sollte, bevor ich die Kommandozeile benutze, um meine PHP-Skripte auszuführen?

Antwort

1

Es ist nur sicher, wenn der Server nur einen Benutzer hat. Andernfalls müssen Sie entweder:

  • prüft für die richtige Benutzer-ID in dem Skript
  • das Skript nur für diesen Benutzer ausführbar machen

(Dies ist ein Linux-Server vorausgesetzt) ​​

+0

Ja, es ist Linux, und ich bin der einzige Benutzer (für jetzt). Okay danke – HappyDeveloper

1

Die Befehlszeile ist kein sehr guter Ort, um Ihre Webanwendung zu steuern: Ihre App zeigt HTML-Ausgabe an, was für einen menschlichen Benutzer nicht gut ist (nicht zu erwähnen, dass JavaScript nicht funktioniert) etc).

Sie könnten veranlassen, dass verschiedene Ausgaben erzeugt werden, wenn Sie von der Befehlszeile aus laufen, aber als praktische Frage: warum sollten Sie sich mit all dem beschäftigen? Warum sollte der Administrator nicht wie jeder andere Benutzer aus dem Internet authentifiziert werden?

Wenn Sie eine spezielle Hintertür in die App allerdings ohnehin gebaut haben wollen, würde ich so etwas wie dies vorschlagen (die web-basiert):

define('ADMIN_BACKDOOR', true); // comment out to disable 
$is_admin = defined('ADMIN_BACKDOOR') && $_SERVER['REMOTE_ADDR'] == '127.0.0.1'; 

Diese IMO so gut wie unmöglich ist, zu nutzen und Es ermöglicht Ihnen Administratorzugriff aus einer natürlichen Umgebung (dem Browser).

+0

I Ich brauche diese "Hintertür", weil ich Skripte aufrufen möchte, die nicht über das Internet zugänglich sind, und ohne mich anmelden zu müssen, um mich zu authentifizieren. Ich habe wenig oder keine Erfahrung in der Verwaltung eines Servers, und ich bin dabei, für einen dedizierten Server-Plan zu registrieren. Ich dachte, die Befehlszeile wäre der beste Weg, um die Cronjobs auf meine Skripte zugreifen zu lassen. Genauer gesagt muss ich einen Crawler von Zeit zu Zeit zum Crawlen bringen. Ich habe bereits spezielle Ausgabeeinstellungen für die Verwendung der Befehlszeile erstellt (zB: Ausnahmen erscheinen ohne HTML) – HappyDeveloper

+1

Bitte erklären Sie "nicht über das Internet zugänglich". Wenn sie tatsächlich nicht zugänglich sind, was braucht es dann für die Authentifizierung? Außerdem hatte ich den Eindruck, dass die Skripte, die Sie aufrufen möchten, Teil Ihrer "Hauptanwendung" sind. Wenn sie dort sind, um spezifisch von cron aufgerufen zu werden, dann ist dieser Ansatz in Ordnung. – Jon

+0

Nicht über das Web zugänglich, bedeutet, dass sie außerhalb der Webroot sind, und sie müssen die Prüfung bestehen, die ich in meinem ersten Post geschrieben habe. Ok, es ist in Ordnung, solange sie von einem Cron angerufen werden. Ich bin mir immer noch nicht sicher, wie ich mit diesen Prozessen umgehen soll. Wie visualisiere ich, was mit einem Skript passiert, das von einem Cron aufgerufen wurde? Durch Dateiprotokolle? Und wie halte ich es an, wenn ich muss? (Sagen Sie mir, ob ich ein anderes Thema dafür starten muss) – HappyDeveloper

Verwandte Themen