Manuelf: Webserver- Zugriff schützen

Hallo,

leider ist mir zu diesem Thema kein besserer Titel eingefallen.

Genau genommen geht es um mein Smart- Home, welches ich gerade einrichte.

Ich habe auf meiner Synology NAS die Surveillance Station eingerichtet und habe nun ein PHP Skript geschrieben welches mir ermöglicht meine Kameras, durch aufrufen des Skripts, zu aktivieren oder deaktivieren.

Das ganze würde ich gerne über eine Geolocating App auf meinem Handy verknüpfen damit die Kameras beim Verlassen des Hauses automatisch eingeschaltet werden und beim Betreten des Hauses automatisch wieder deaktiviert werden.

Damit das ganze allerdings mit der App am Handy funktioniert müsste ich diese PHP Datei über eine Portweiterleitung zu meiner NAS ins Internet freigeben. Dazu möchte ich das ganze allerdings etwas absichern, denn sonst könnte ja jeder der die genaue Adresse weiß die Kameras ein- und ausschalten.

Könnt Ihr mir vielleicht dabei weiterhelfen und sagen wie Ihr das am Besten lösen würdet? Von den PHP Kenntnissen her sieht es bei mir allerdings nicht so berauschend aus ;)

Dies wäre meine derzeitige Datei:

<?php
//Authentication
$json = file_get_contents('https://10.1.1.10:4444/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account=BENUTZERNAME&passwd=PASSWORT&session=SurveillanceStation&format=sid');
$obj = json_decode($json, true);
$sid = $obj["data"]["sid"];
 
//GetList
$json = file_get_contents('https://10.1.1.10:4444/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=List&version=3&_sid='.$sid);
$obj = json_decode($json, true);
$cam_activated = $obj["data"]["cameras"][0]["enabled"];
 
if($cam_activated == false){
	//Activate cam
	$json = file_get_contents('https://10.1.1.10:4444/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Enable&version=3&cameraIds=1&_sid='.$sid);
	echo "<div class=\"centered\"><img src=\"https://10.1.1.10/on_icon.png\" style=\"width:auto;height:auto;\" /></div>";
} 
else
{
	//Deactivate cam
	$json = file_get_contents('https://10.1.1.10:4444/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Disable&version=3&cameraIds=1&_sid='.$sid);
	echo "<div class=\"centered\"><img src=\"https://10.1.1.10/off_icon.png\" /></div>";
}
?>
 
<style type="text/css">
.centered {
  position: fixed;
  top: 40%;
  left: 40%;
}
</style>

Liebe Grüße Manuelw

  1. Tach!

    Dazu möchte ich das ganze allerdings etwas absichern, denn sonst könnte ja jeder der die genaue Adresse weiß die Kameras ein- und ausschalten.

    Könnt Ihr mir vielleicht dabei weiterhelfen und sagen wie Ihr das am Besten lösen würdet?

    Im einfachsten Fall den Webserver so konfigurieren, dass man ohne HTTP-Authentication die PHP-Ziele nicht aufrufen kann. Im besten Fall den Aufruf über HTTPS machen (und das ebenfalls entsprechend im Server konfigurieren).

    Eine alternative Lösung wäre ein formularbasiertes Login.

    Die Frage ist in jedem Fall, ob die App im Mobiltelefon mit diesen Zugangsmechanismen umgehen kann.

    dedlfix.

  2. Mal etwas abseits von der eigentlichen Frage: Wie wäre es denn wenn du den Ansatz umdrehst?

    Wenn du die Kameras aktivieren möchtest wenn du mit deinem Telefon das Haus verlässt, könntest du ja auch das Script regelmäßig prüfen lassen, ob dein Telefon noch mit dem heimischen WLAN verbunden ist.