Heim >php教程 >PHP开发 >Forschung zur PHP-Anwendungssicherheitspräventionstechnologie

Forschung zur PHP-Anwendungssicherheitspräventionstechnologie

黄舟
黄舟Original
2016-12-14 13:38:541177Durchsuche

PHP-Sicherheitspräventionsprogrammmodell

Kopieren Sie den Code wie folgt:
 /* PHP Anti-Injection Cross-Site V1.0
Fügen Sie oben auf Ihrer Seite hinzu: require("menzhi_injection .php") ;
Es kann eine universelle Verhinderung von SQL-Injection- und XSS-Cross-Site-Schwachstellen erreicht werden.
 ##################Defekte und Verbesserungen##################
Es gibt immer noch viele Mängel im Programm, ich hoffe, Sie können helfen, es zu verbessern
##################Referenz und Danksagungen############### ###
Neeao'ASP SQL Universal Anti-Injection Program V3.0
Ein Teil des Codes wird von Discuz referenziert!
*/
error_reporting(0);
define('MAGIC_QUOTES_GPC ', get_magic_quotes_gpc());
$menzhi_injection="'|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|or| char|declare";
$ menzhi_injection = explosion("|",$menzhi_injection);
foreach(array('_GET', '_POST', '_COOKIE','_REQUEST') as $_request) {
foreach($$_request as $ _key => $_value) {
//$_value = strtolower($_value);
$_key{0} != '_' && $$_key = dadslashes( $_value);
foreach ($menzhi_injection as $kill_key => $kill_value) {
 if(substr_count($_value,$kill_value)>0) {
 echo "";
 unset ($_value);
exit();
 }
 //echo "
 ".$_value; !MAGIC_QUOTES_GPC) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = daddslashes($val);
 }
 } else {
  $string = addslashes($string); |x[a-fA-F0-9]{4}));)/', '&\1',str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string));
return $string;
}
?>

Verwenden Sie den Hinweis
Fügen Sie oben auf Ihrer Seite Folgendes hinzu, um SQL-Injection und XSS-Cross-Site-Schwachstellen zu verhindern. Um dieses Programm aufzurufen, verwenden wir require() anstelle von include(), denn wenn require() die Datei mit einem Fehler aufruft, wird das Programm beendet und include() ignoriert ihn. Und wenn require() eine Datei aufruft, wird die externe Datei zuerst aufgerufen, sobald das Programm ausgeführt wird. Inculde() startet die Ausführung erst, wenn diese Zeile erreicht wird. Basierend auf den Funktionsmerkmalen wählen wir require(). Sie können je nach tatsächlichem Bedarf auch Filterzeichen in der Variablen $ menzhi_injection hinzufügen oder löschen, um bessere Verteidigungseffekte zu erzielen. Darüber hinaus können Sie den Code selbst ändern und möglicherweise unerwartete Ergebnisse erzielen. Gewöhnliche Injektionen können verteidigt werden. Das Folgende ist der Testeffekt eines Ein-Satz-Trojaners:
Hey, wenn Sie versucht sind, rufen Sie es einfach oben auf Ihrer Seite auf. Denken Sie daran: „require(“menzhi_injection.php“);“ Dies ist nur ein Gimmick, um das Interesse aller zu wecken, bitte testen Sie es selbst.
Es müssen Mängel und Verbesserungen vorgenommen werden
Da es sich bei diesem Programm nur um einen externen Aufruf handelt, verarbeitet es nur extern übermittelte Variablen und führt keine systematische Analyse Ihrer Anwendung durch. Daher weist es viele Einschränkungen auf. Verwenden Sie es daher bitte mit Vorsicht. Bei Programmen, die GBK-Kodierung verwenden, besteht auch das Risiko von Sicherheitslücken bei der Doppelbyte-Kodierung, obwohl dieses Programm diese Sicherheitslücke bewältigen kann. Aber um diese Schlupflöcher zu schließen, müssen wir immer noch bei der Ursache ansetzen. Um die Datenbankverbindungsdatei zu verarbeiten, können wir Character_set_client=binary hinzufügen. Die Datenbankverbindungsklasse db_mysql.class.php von Discuz!7.0 ist sehr gut geschrieben und Sie können darauf verweisen. Dies ist natürlich nicht Gegenstand dieses kleinen Programms.
Und dieses Programm filtert nicht die Systemvariablen $_SERVER $_ENV $_FILES. Wenn beispielsweise das System $_SERVER['HTTP_X_FORWARDED_FOR'] die IP erhält, können Hacker ihren Wert ändern, indem sie das ursprüngliche HTTP-Anforderungspaket kapern und ändern. Dieses Programm kann diese Schwachstellen bewältigen. Als Programmierer müssen wir uns jedoch mit externen Variablen von der Grundursache befassen, Vorkehrungen treffen, bevor sie auftreten, und Vorkehrungen treffen.
Das Programm ist sehr chaotisch, jeder kann es gerne testen und nutzen. Wenn Sie Kommentare oder Vorschläge haben, können Sie eine Nachricht zur Diskussion hinterlassen.

Fazit

Abschließend wünsche ich Ihnen viel Erfolg bei Ihrem Studium und eine reibungslose Arbeit. Wenn Sie weitere verwandte Artikel erhalten möchten, schauen Sie sich bitte die chinesische PHP-Website (www.php.cn) an!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn