


Fragen zu Sicherheitslücken in Projektprogrammen, die von Sicherheitserkennungstools gescannt werden?
Das Kundenunternehmen nutzte eine Evaluierungssoftware, um unser Projekt zu bewerten, und fand mehrere Sicherheitslücken, darunter SQL-Injection und XSS-Angriffe. Ich habe mir den Serverprogrammcode angesehen, in dem die Sicherheitslücken auftraten ,Es wurde festgestellt, dass es grundsätzlich Schwachstellen gibt, bei denen die Seite Get- oder Post-Daten an den Server sendet. Das Backend verwendet die mit dem CI-Framework gelieferte Eingabeklasse, um die eingegebenen Informationen zu filtern vom Benutzer, und das Konfigurationselement csrf
von CI wurde ebenfalls aktiviert
Testwerkzeuge:
Schwachstellenübersicht:
Es gibt ein paar Kopfschmerzen:
Der ursprüngliche Code zum Empfangen von
get
- undpost
-Daten wurde so geschrieben$this->input->get('section_id)
, und andere Stellen im Projekt empfangen ihn so. Es liegt auf der Hand, dass Filter- und Sicherheitsvorkehrungen getroffen wurden . Warum wird es noch solche Lücken geben?Wenn es ein Problem mit dem Server gibt, der
get、post
Daten empfängt, sollten alle Stellen im Projekt, die diese Methode verwenden, Lücken aufweisen. Warum treten solche Lücken nur an wenigen Stellen auf?Kunden sehen nur Testdaten, wie soll ich es ihnen erklären und mit ihnen kommunizieren?
Bitte geben Sie mir einen Rat~
Antwortinhalt:
Das Kundenunternehmen nutzte eine Evaluierungssoftware, um unser Projekt zu bewerten, und fand mehrere Sicherheitslücken, darunter SQL-Injection und XSS-Angriffe. Ich habe mir den Serverprogrammcode angesehen, in dem die Sicherheitslücken auftraten ,Es wurde festgestellt, dass es grundsätzlich Schwachstellen gibt, bei denen die Seite Get- oder Post-Daten an den Server sendet. Das Backend verwendet die mit dem CI-Framework gelieferte Eingabeklasse, um die eingegebenen Informationen zu filtern vom Benutzer, und das Konfigurationselement csrf
von CI wurde ebenfalls aktiviert
Testwerkzeuge:
Schwachstellenübersicht:
Es gibt ein paar Kopfschmerzen:
Der ursprüngliche Code zum Empfangen von
get
- undpost
-Daten wurde so geschrieben$this->input->get('section_id)
, und andere Stellen im Projekt empfangen ihn so. Es liegt auf der Hand, dass Filter- und Sicherheitsvorkehrungen getroffen wurden . Warum wird es noch solche Lücken geben?Wenn es ein Problem mit dem Server gibt, der
get、post
Daten empfängt, sollten alle Stellen im Projekt, die diese Methode verwenden, Lücken aufweisen. Warum treten solche Lücken nur an wenigen Stellen auf?Kunden sehen nur Testdaten, wie soll ich es ihnen erklären und mit ihnen kommunizieren?
Bitte geben Sie mir einen Rat~
1 Die Beurteilung dieser Art von Testsoftware ist nicht unbedingt genau. Im Allgemeinen wird nur beurteilt, ob die Zeichenlängen der durch die Verbindung verschiedener Anweisungen zurückgegebenen Ergebnisse gleich sind, um festzustellen, ob eine Injektion vorliegt.
2 Nicht Vertrauen Sie zu sehr darauf, welches Framework oder welches Framework nicht sicher ist. Sie müssen die globale Filterung selbst durchführen
3 Die hier erkannten XSS sind keine Speichertypen, daher ist das Risiko nicht so hoch. Diese Art von Bericht wird am häufigsten als Sprungbrett verwendet.
4 Was der Kunde wünscht, ist die Gewissheit, dass der Bericht keine Lücken enthält.
5 Wenn Sie nur möchten, dass er die Schwachstelle nicht scannt. Schreiben Sie am Programmeintrag eine Protokolldatei und zeichnen Sie alle Anfragen und Parameter auf, um zu analysieren, wie die Scan-Software ermittelt, ob eine Schwachstelle vorliegt.
6 Ändern Sie die Schwachstelle im Bericht der Scan-Software. Aus persönlicher Erfahrung sollte dies so sein, dass die von Ihnen übergebenen Parameter kein Intervall haben.
7 MySQL-Fehleraufforderungen schließen, um eine Fehlerinjektion zu verhindern.
Vorbeugung
1 Fügen Sie dem Programm Word-Filterung den globalen SQL-Schlüssel hinzu
2 Aktivieren Sie PHP-Einzelanführungszeichen-Escape (ändern Sie php.ini magic_quotes_gpc).
3 Apache/nginx/iis ermöglichen Dienstprotokolle, MySQL-Protokolle für langsame Abfragen und Programmeintragsdatensatz-Anforderungsprotokolle
4 Der Server installiert Sicherheitssoftware für Webanwendungen wie SafeDog
5 Verwenden Sie UTF-8 für Datenbankverknüpfungen zu Verhindern Sie die doppelte GBK-Byte-Injektion
6 Erhöhen Sie die Komplexität des MySQL-Passworts, verbieten Sie externe MySQL-Links, ändern Sie die Standardportnummer
7 Reduzieren Sie die Rechte des Programm-MySQL-Kontos und gewähren Sie nur normales Hinzufügen, Löschen, Überprüfen und Ändern Berechtigungen. Es ist verboten, Dateioperationsberechtigungen zu erteilen
XSS-Cross-Site-Angriffslösung
1 Verwenden Sie htmlspecialchars, um zu maskieren, wo Text geschrieben wird.
2 Verwenden Sie SSL, um das Laden und Referenzieren externer JS zu verhindern.
3 Stellen Sie httponly ein, um den Erhalt von Cookies zu verhindern.
4 Bereits gepostet Stellen Sie sicher, dass keine Injektion erfolgt (falls vorhanden, können Sie hexadezimal verwenden, um HTML-Spezialzeichen zu umgehen und den Effekt eines XSS-Angriffs zu erzielen).
5 Es ist am besten, zwei Programmsätze mit unterschiedlichen Routing-Regeln für das Backend und das Frontend zu verwenden . Schlüsseloperationen im Backend (Backup-Datenbank) sollten ein sekundäres Passwort festlegen und die Komplexität der Anforderungsparameter erhöhen, um CSRF zu verhindern
PHP-Sicherheit
1 Fügen Sie beim Hochladen von Dateien eine Suffixfilterung hinzu und treffen Sie beim Filtern keine Urteile mit „logischer Negation“.
2 Es ist verboten, Dateien mit den Suffixen php und htaccess hochzuladen. Verwenden Sie nicht die vom Client übermittelten Daten, um das Suffix und den zufälligen Dateinamen hinzuzufügen Einheitliches Routing zur Begrenzung unbefugten Zugriffs. Das Webroot-Verzeichnis darf nur eine index.php (Eintragsdatei) für den externen Schutz haben. Alle anderen (hochgeladenen) Dateien werden mit der Anti-Leeching-Funktion in nginx hinzugefügt. 4. PHP-Dezentralisierungsverarbeitung . Das Webverzeichnis schränkt die Erstellung von Ordnern und Texten ein (mit Ausnahme der vom Programm benötigten Ordner gibt es normalerweise ein Cache-Verzeichnis, für das Schreibberechtigungen erforderlich sind)
5 Filtern Sie die Verwendung von IIS/nginx-Dateianalyse-Schwachstellen
6 Verwenden Zum Abrufen von Passwörtern, zum Abrufen von Bestätigungscodes für Mobiltelefone und zum Abrufen von E-Mails sollte ein zusätzlicher Server verwendet werden. (Verhindern Sie, dass die echte IP-Adresse über die Passwort-Abruffunktion abgerufen wird.) Der letzte Link zum Zurücksetzen des Passworts, der an die Mailbox des Benutzers gesendet wird, muss über komplexe Verschlüsselungsparameter verfügen
7 Das Benutzeranmeldesystem sollte über eine Single-Sign-On-Funktion verfügen. Wenn sich der Benutzer angemeldet hat, sollten andere Personen zur Anmeldung aufgefordert werden wieder.
8
1 Sicherheitskenntnisse
2 Wenn Sie eine integrierte Umgebung verwenden, sollten Sie die PHP-Probe, phpmyadmin, phpinfo (Probe) danach löschen Die Installation ist abgeschlossen. Die Nadel kann Ihren Webpfad überprüfen und phpmyadmin kann ihn mit Brute-Force knacken)
2 Es ist am besten, den MD5-Wert nach dem Passwort-Salting für das Benutzerpasswort zu verwenden
3 Fügen Sie einen Bestätigungscode hinzu Benutzer meldet sich an, wie man eine Begrenzung der Fehleranzahl hinzufügt, um Brute-Force-Cracking zu verhindern
4 Verwenden Sie die CDN-Beschleunigung, um die echte IP zu verbergen
5 Geben Sie beim Anmelden von Benutzern keine Klartext-Kontokennwörter weiter, um C. zu verhindern -seitiges Schnüffeln und Erhalten von Benutzer- und Administrator-Klartext-Kontokennwörtern durch ARP-Spoofing
6 Deaktivieren Sie PHP-Systembefehle. Anzahl der Zeilen exec, system usw.
7 Installieren Sie Sicherheitssoftware wie SafeDog auf dem Server
8 Die Im Webverzeichnis ist das Speichern von .rar- und zip-Dateien verboten

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Ursachen und Lösungen für Fehler Bei der Verwendung von PECL zur Installation von Erweiterungen in der Docker -Umgebung, wenn die Docker -Umgebung verwendet wird, begegnen wir häufig auf einige Kopfschmerzen ...

In C wird der Zeichenentyp in Saiten verwendet: 1. Speichern Sie ein einzelnes Zeichen; 2. Verwenden Sie ein Array, um eine Zeichenfolge darzustellen und mit einem Null -Terminator zu enden. 3. Durch eine Saitenbetriebsfunktion arbeiten; 4. Lesen oder geben Sie eine Zeichenfolge von der Tastatur aus.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
