SSH-Key auf plausibilität prüfen
bernd

bernd commited on 2011-12-21 16:51:54
Zeige 1 geänderte Dateien mit 10 Einfügungen und 1 Löschungen.


git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@2097 87cf0b9e-d624-0410-a070-f6ee81989793
... ...
@@ -169,9 +169,18 @@ function newkey($pubkey, $handle)
169 169
     system_failure("Der eingegebene Name enthält ungültige Zeichen. Bitte nur Buchstaben, Zahlen, Unterstrich, Binderstrich und Punkt benutzen.");
170 170
   }
171 171
 
172
-  // FIXME: Muss man den SSH-Key auf Plausibilität prüfen? Aus Sicherheitsgründen vermutlich nicht.
173 172
   $keyfile = $key_dir.'/'.$handle.'.pub';
174 173
   file_put_contents($keyfile, $pubkey);
174
+  
175
+  $proc = popen("/usr/bin/ssh-keygen -l -f '{$keyfile}'", 'r');
176
+  $output = fread($proc, 512);
177
+  pclose($proc);
178
+  if (preg_match('/.* is not a public key file.*/', $output)) {
179
+    unlink($keyfile);
180
+    system_failure('Der angegebene SSH-Key scheint ungültig zu sein.');
181
+  }
182
+  
183
+
175 184
   git_wrapper('add '.$keyfile);
176 185
 
177 186
   $userconfig = $config_dir . '/' . $username . '.conf';
178 187