2016-11-23 4 views
2

Ich benutze jQuery Webcam-Plugin von Xarg.org, dieses Plugin erlauben, Benutzer Webcam dank Flash-Anwendung zu verwenden und Snap nehmen.Eingabe-Validierung auf HTTP_RAW_POST_DATA

Wenn ein Snap ausgeführt wird, wird das Bild an das PHP-Skript gesendet, um das Bild mit HTTP_RAW_POST_DATA zu speichern. Der Autor schlägt dieses Skript:

<?php 
$str = file_get_contents("php://input"); 
file_put_contents("/tmp/upload.jpg", pack("H*", $str)); 
?> 

Mein Problem die Eingabevalidierung ist, ich weiß nicht, wie die Daten zu prüfen, von HTTP_RAW_POST_DATA.

ich diesen Test nach dem vorherigen Skript hinzufügen:

$imageOK=true; 
$imagesize = getimagesize("views/img/order.jpg"); 
if(@is_array($imagesize)){ 
    if($imagesize[mime]!="" && $imagesize[mime]=="image/jpeg"){ 
     $imageOK=true; 
    } 
    else { 
    $imageOK=false; 
    } 
} else { 
    $imageOK=false; 
} 
if(!$imageOK) 
    unlink("views/img/order.jpg"); 

Glauben Sie, dass es sicher ist? Wenn nicht, welche Art von Test kann ich machen?

Dank

+0

Side note - Ich glaube nicht, 'is_array()' jemals lösen eine Warnung Sie mit 'zum Schweigen zu bringen brauchen @' . "Pantomime" ist jedoch eine undefinierte Konstante, die eine Notiz werfen wird. Ich schlage vor, dass Sie die Fehlermeldungseinstellungen in Ihrer PHP-Entwicklungsumgebung überprüfen. –

Antwort

0

Sie überprüfen den Dateityp mit getimagesize(), was gut und sicher ist.

Aber ich sehe auf Ihrem Code keine Validierung der Datei Größe.

Die goldene Regel besteht darin, Eingaben vom Client niemals zu vertrauen. Sie sollten also serverseitig die Größe der Datei überprüfen.

können Sie überprüfen die OWASP-Website, die einige gute Praktiken über Datei-Upload gibt: https://www.owasp.org/index.php/Unrestricted_File_Upload