Heim  >  Artikel  >  Backend-Entwicklung  >  Yii Framework Offizieller Leitfaden Serie 51 – Sonderthema: Sicherheitsmaßnahmen (Sicherheit)

Yii Framework Offizieller Leitfaden Serie 51 – Sonderthema: Sicherheitsmaßnahmen (Sicherheit)

黄舟
黄舟Original
2017-02-16 09:56:191334Durchsuche



1. Verhinderung von Cross-Site-Scripting-Angriffen

Cross-Site-Scripting-Angriff (als XSS bezeichnet). Webanwendungen sammeln Informationen von Benutzern, Benutzerdaten. Angreifer injizieren häufig JavaScript, VBScript, ActiveX, HTML oder Flash in anfällige Webanwendungen, um Besucher zu verwirren und Besucherinformationen zu sammeln. Beispielsweise kann ein schlecht gestaltetes Forensystem Benutzereingaben ohne Überprüfung anzeigen. Ein Angreifer kann einen bösartigen JavaScript-Code in den Inhalt des Beitrags einschleusen. Auf diese Weise können diese JavaScript-Codes auf dem Computer des Besuchers ausgeführt werden, wenn andere Besucher diesen Beitrag lesen.

Eine der wichtigsten Maßnahmen zur Verhinderung von XSS-Angriffen ist: Inhaltsprüfung vor der Anzeige der vom Benutzer eingegebenen Inhalte. Beispielsweise können Sie HTML im Inhalt maskieren. In manchen Fällen ist diese Methode jedoch nicht ratsam, da diese Methode alle HTML-Tags deaktiviert.

Yii integriert HTMLPurifier und stellt Entwicklern eine sehr nützliche Komponente CHtmlPurifier zur Verfügung, die die HTMLPurifier-Klasse kapselt. Durch effektive Überprüfungs-, Sicherheits- und Whitelisting-Funktionen kann es sämtlichen Schadcode aus den geprüften Inhalten entfernen und sicherstellen, dass der gefilterte Inhalt nach der Filterung den Standards entspricht.

CHtmlPurifier-Komponente kann als Widget oder Filter verwendet werden. Bei Verwendung als Widget kann CHtmlPurifier den in der Ansicht angezeigten Inhalt sicher filtern. Das Folgende ist ein Codebeispiel:



3985325355f9adb62c26998b2d6e1066beginWidget('CHtmlPurifier'); ?>
//...这里显示用户输入的内容...
3985325355f9adb62c26998b2d6e1066endWidget(); ?>


2. Verhinderung von Cross-Site Request-Forgery-Angriffe

Cross-Site Request Forgery (kurz CSRF)-Angriff, d. h. wenn der Browser des Benutzers eine bösartige Website besucht, veranlasst der Angreifer den Browser des Benutzers, eine vom Angreifer angegebene Anfrage an eine vertrauenswürdige Website zu initiieren . Beispielsweise verfügt eine bösartige Website über ein Bild und die src-Adresse dieses Bildes verweist auf eine Bank-Website: http://www.php.cn/. Wenn der Benutzer diese bösartige Webseite besucht, nachdem er sich auf der Website der Bank angemeldet hat, sendet der Browser des Benutzers eine Anweisung an die Website der Bank. Der Inhalt dieser Anweisung könnte sein: „Überweisen Sie 10.000 Yuan auf das Konto des Angreifers.“ Cross-Site-Angriffe machen sich eine bestimmte Website zunutze, der der Benutzer vertraut, während CSRF-Angriffe im Gegenteil die spezifische Benutzeridentität des Benutzers auf einer Website ausnutzen.

Um CSRF-Angriffe zu verhindern, müssen Sie eines beachten: GETAnfragen dürfen nur Daten abrufen und keine Daten auf dem Server ändern. Die POST-Anfrage sollte einige Zufallswerte enthalten, die vom Server erkannt werden können, um sicherzustellen, dass die Quelle der Formulardaten und das Ziel der laufenden Ergebnisse identisch sind.

Yii implementiert einen CSRF-Präventionsmechanismus, um Angriffe basierend auf POST zu verhindern. Der Kern dieses Mechanismus besteht darin, zufällige Daten im Cookie festzulegen und diese dann mit dem entsprechenden Wert in den vom Formular übermittelten POST-Daten zu vergleichen.

Standardmäßig ist die CSRF-Prävention deaktiviert. Wenn Sie es aktivieren möchten, können Sie den CHttpRequest-Abschnitt der Komponente in der Anwendungskonfiguration bearbeiten.

Codebeispiel:



return array(
    'components'=>array(
        'request'=>array(
            'enableCsrfValidation'=>true,
        ),
    ),
);


Um ein Formular anzuzeigen, Bitte verwenden Sie CHtml::form, anstatt selbst HTML-Code zu schreiben. Denn CHtml::form kann automatisch ein verstecktes Element in das Formular einbetten. Dieses versteckte Element speichert zufällige Daten, die zur Überprüfung erforderlich sind. Diese Daten können zur Überprüfung an den Server gesendet werden, wenn das Formular gesendet wird.

3. Verhinderung von Cookie-Angriffen

Es ist sehr wichtig, Cookies vor Angriffen zu schützen. Denn die Sitzungs-ID wird normalerweise in Cookies gespeichert. Wenn der Angreifer eine gültige Sitzungs-ID stiehlt, kann er die dieser Sitzungs-ID entsprechenden Sitzungsinformationen verwenden.

Hier ein paar Vorsichtsmaßnahmen:

  • Sie können SSL verwenden, um einen sicheren Kanal zu erstellen und das Authentifizierungs-Cookie nur über eine HTTPS-Verbindung zu senden. Auf diese Weise kann der Angreifer das gesendete Cookie nicht entschlüsseln.

  • Legen Sie die Cookie-Ablaufzeit fest. Machen Sie dasselbe für alle Cookies und Seesion-Tokens. Dies verringert die Wahrscheinlichkeit, angegriffen zu werden.

  • Verhindert Cross-Site-Code-Angriffe, da dadurch beliebiger Code im Browser des Benutzers ausgelöst werden kann, wodurch möglicherweise die Cookies des Benutzers verloren gehen.

  • Überprüfen Sie den Inhalt des Cookies, wenn sich das Cookie ändert.

Yii implementiert einen Cookie-Überprüfungsmechanismus, um zu verhindern, dass Cookies geändert werden. Nach der Aktivierung kann eine HMAC-Prüfung der Cookie-Werte durchgeführt werden.

Die Cookie-Überprüfung ist standardmäßig deaktiviert. Wenn Sie es aktivieren möchten, können Sie den CHttpRequest-Abschnitt der Komponente in der Anwendungskonfiguration bearbeiten.

Codebeispiel:



return array(
    'components'=>array(
        'request'=>array(
            'enableCookieValidation'=>true,
        ),
    ),
);


Achten Sie darauf, Yii zu verwenden Authentifizierte Cookie-Daten. Verwenden Sie für Cookie-Vorgänge die integrierte Cookie-Komponente von Yii, nicht $_COOKIES.

// 检索一个名为$name的cookie值
$cookie=Yii::app()->request->cookies[$name];
$value=$cookie->value;
......
// 设置一个cookie
$cookie=new CHttpCookie($name,$value);
Yii::app()->request->cookies[$name]=$cookie;


Das Obige ist der Inhalt von Yii Framework Official Guide Series 51 – Spezialthema: Sicherheitsmaßnahmen (Sicherheit). PHP chinesische Website (www. php.cn)!


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