Sådan hærdes din PHP for bedre sikkerhed

PHP er vidt brugt blandt mange websteder & applikationer, men bør hærdes af hensyn til sikkerhed. Her er nogle avancerede tip til at sikre din PHP-konfigurationsfil.


Sådan hærdes PHP

PHP er langt det mest populære web back-end programmeringssprog, der bruges i dag. Til dato over 80% af sider med backend implementere PHP. WordPress, Joomla og Drupal er alle støttet af det. Desværre er PHP blevet et populært mål for hackingforsøg, hvilket er grunden til at sikre dens konfiguration er kritisk. Følg disse enkle trin for at hærde din PHP-konfiguration og for at hjælpe med at beskytte den mod hacking af sårbarheder.

Find PHP-konfigurationsfilen

Navnet på konfigurationsfilen til PHP er php.ini, som du bliver nødt til at redigere. Placeringen af ​​filen varierer baseret på dit hostingfirma og servertype.

Rediger med Shared Hosting

Hvis du ikke er sikker på, hvor din php.ini-fil er placeret, skal du kontakte din hostingudbyder. Nogle udbydere kræver, at du placerer PHP-indstillinger i “.htaccess” -filen i webroten. Hvis dette er tilfældet, skal PHP-indstillinger tilføjes en pr. Linje i formatet “php_value Name value”. Husk, at din hostingudbyder muligvis forhindrer ændring af visse indstillinger.

Rediger med en VPS eller en dedikeret server

Webhost Manager (WHM) forenkler processen med at redigere PHP-konfigurationsfilen ved at tilvejebringe en enkel brugergrænseflade. Find blot “Servicekonfiguration” i WHM og klik på “PHP Configuration Editor”. Vælg “Avanceret tilstand” på den side, der vises..

PHP-konfigurationseditor

Hvis du ikke bruger et kontrolpanel som WHM, skal du åbne og redigere php.ini direkte. Placeringen af ​​php.ini varierer baseret på serverens operativsystem. Mange Linux-systemer placerer filen på stien “/etc/php.ini”. Du kan bekræfte dens placering via kommandolinjen. Start med at logge ind på serveren via SSH (kontakt din hostingudbyder for instruktioner). Når du er tilsluttet, skal du indtaste kommandoen “php –ini” og trykke på Enter. Søg efter den linie, der blev returneret med titlen “Loaded Configuration File”, og noter php.ini-filstien.

Du kan åbne og redigere php.ini ved hjælp af en teksteditor, der kører inden for kommandolinjen, såsom “nano” til Linux. Skriv blot “nano /path/to/php.ini” og tryk på Enter.
Nano til Linux

php.ini struktur

Inden for php.ini placeres hver indstilling på sin egen linje i formatet “indstillingsnavn = indstillingsværdi”. Enhver linje, der starter med en semikolon, er en kommentar, så opdater ikke nogen af ​​disse linjer.

Rediger konfigurationsindstillinger

Nedenfor er en liste over indstillinger, der skal gennemgås og opdateres for at forbedre sikkerheden. Indstillingerne grupperes i flere sektioner herunder baseret på deres formål.

Afsnit 1: Fjernforbindelser

allow_url_fopen = 0
allow_url_include = 0

Tillad ikke, at fopen-indpakninger åbner eksterne webadresser. Fjernindhold kan ikke altid være tillid til; deaktivering af disse indstillinger sikrer, at fopen-indpakning kun kan indlæse lokalt indhold.

Afsnit 2: Kørselsindstillinger

max_input_time = 30
max_execution_time = 30

Begræns den maksimale tid, der er tilladt til at behandle input, såvel som den maksimale tid, et PHP-script kan køre. Her er begge indstillinger indstillet til en grænse på 30 sekunder. Dette sikrer, at det, hvis et script blev kompromitteret, ikke vil læse input eller køre i en længere periode. Et godt kodet script skal ikke kræve mere end 30 sekunder for at køre.

memory_limit = 8M

Sørg for, at et PHP-script aldrig bruger mere end 8 MB hukommelse. I tilfælde af at et script blev kompromitteret, begrænser denne indstilling effektivt den mængde hukommelse, som scriptet kan bruge.

register_globals = slukket

Deaktivering af denne indstilling forhindrer effektivt, at anmodningsdata automatisk gemmes som en variabel. Registrering af globale variabler rejser flere bekymringer; et eksempel er, at miljøvariabler let kan ændres. For at undgå disse problemer skal du sikre dig, at denne indstilling er slået fra.

udsæt_php = 0

Som standard udsættes tilstedeværelsen af ​​PHP såvel som dets versionnummer som en del af HTTP-svar. Da dette giver unødvendig indsigt i serveren, anbefales det at slå dette fra.

cgi.force_redirect = 1

Sørg for, at PHP kun kan køres via en webserver-omdirigeringsregel. Dette forhindrer, at PHP kaldes direkte, hvilket forbedrer sikkerheden.

Afsnit 3: Begrænsninger for input af data

post_max_size = 256K
max_input_vars = 100

Hackere kan prøve at oversvømme webapplikationsressourcer ved at sende massedata til det, hvilket kan reducere overførselshastigheder og tilgængelige serverressourcer. Effekten af ​​denne type angreb kan minimeres ved at reducere den maksimale størrelse af POST-data og også ved at begrænse mængden af ​​anmodningsdata. Bemærk, at “post_max_size” også påvirker den maksimale størrelse af fil uploads; Hvis din applikation har filoverførselsfunktioner, skal du sikre dig, at værdien af ​​denne indstilling er mindst lige så stor som “upload_max_filesize”.

Afsnit 4: Fejlhåndtering

display_errors = 0
display_startup_errors = 0

Fejlmeddelelser skal aldrig vises for slutbrugeren, da meddelelserne ofte indeholder detaljerede oplysninger om programmets kode og serveren. Disse oplysninger kan potentielt bruges til at hjælpe hackere. Log i stedet fejlmeddelelser til en sikker fil på serveren.

log_errors = 1
error_log = / home / johndoe / error_log

PHP-fejl skal logges for at fejlsøge applikationskoden såvel som for at undersøge for potentielle sårbarheder. Hvis du bruger en filhåndtering som den der følger med cPanel, er et praktisk og sikkert sted for fejlloggen direkte uden for webroten.

Afsnit 5: Begræns filadgang

open_basedir = "/ Home / jenshansen / public_html"

Open_basedir sikrer, at PHP kun kan indeholde filer inden for de listede kataloger. Dette forbedrer sikkerheden ved at forhindre, at PHP-scripter utilsigtet får adgang til sikre filer uden for de hvidlistede stier. Bemærk, at du skal tilføje alle biblioteker, som PHP har brug for for at få adgang til hvidlisten, inklusive de midlertidige fil upload og session mapper (se nedenfor). Du kan tilføje flere mapper til listen ved at placere en kolon mellem hvert bibliotek. For eksempel:

open_basedir = "/ Home / jenshansen / public_html: / var / lib / php / tmp_upload: / var / lib / php / session"

Afsnit 6: Upload af filer

file_uploads = 0

Hvis din applikation ikke indeholder funktionalitet til at uploade filer fra brugernes computere, tilrådes det at deaktivere denne PHP-funktion helt. Dette hjælper med at forhindre hackere i at uploade scripts, som derefter kan injiceres i applikationen.

file_uploads = 1
upload_max_filesize = 1M

Hvis din ansøgning kræver filoverførselsfunktioner, skal du holde “upload_max_filesize” til så lille værdi som muligt.

upload_tmp_dir = / var / lib / php / tmp_upload

Som standard er midlertidige fil uploads placeret i et bibliotek, der kan skrives af alle systembrugere. Placeringen skal skiftes til et mere sikkert bibliotek. Sørg for, at den nye katalogplacering ikke er placeret inden for webroten. Hvis du bruger en filhåndtering som den, der er inkluderet i cPanel, er en let og sikker placering til at oprette upload-biblioteket direkte uden for webroten (dvs. det samme bibliotek, som public_html findes inden for). En anden sikker placering er at oprette kataloget i PHP-biblioteket i “/ var / lib”. Stien afhænger af operativsystemet, dvs. “/ var / lib / php” eller “/ var / lib / php5”. Hvis der har open_basedir-begrænsninger i kraft, skal du sikre dig, at det midlertidige upload-bibliotek er inkluderet i open_basedir-hvidlisten.

Afsnit 7: Sessionssikkerhed

Sessioner bruges til at bevare information på tværs af flere anmodninger til individuelle brugere. Den aktuelle information gemmes på serveren, og en cookie (eller, mindre sikkert, HTTP-anmodningsdata), der indeholder et session-ID, bruges til at validere brugere. Sessioner bruges til formål, herunder godkendelse i en webapplikation, hvilket er en af ​​grundene til, at dens sikkerhed er så vigtig. Følgende indstillinger kan opdateres for at hjælpe med at reducere risikoen for sessionopfangning.

session.use_strict_mode = 1

Opret en ny session-id, hvis browseren sender et tidligere uninitialiseret ID. Dette hjælper med at forhindre et angreb kaldet session fixation.

session.cookie_httponly = 1

Tillad, at session-cookien kun er tilgængelig fra en HTTP-anmodning og ikke fra andre kilder, f.eks. JavaScript. Dette hjælper med at forhindre et angreb kaldet et XSS-angreb.

session.use_cookies = 1
session.use_only_cookies = 1
session.use_trans_sid = 0

Gem session-ID i en cookie i stedet for at sende det som en URL-parameter. Dette hjælper med at holde en brugers session sikker ved at forhindre session fixation angreb.

session.name = custom_session_id

Cookies gemmer deres oplysninger i nøgleværdiformat. Det tilrådes at opdatere standardnøglenavnet på den cookie, der gemmer session-ID. Opdater “custom_session_id” med en tilpasset værdi.

session.cookie_secure = 1

Hvis din webapplikation kører over HTTPS-protokollen for sikkerhed, skal du aktivere denne indstilling til at tvinge cookies, der indeholder session-id’er, kun til at få adgang til via en sikker forbindelse.

session.referer_check = eksempel.com

Kontroller, hvor anmodningen kom fra for at afgøre, om adgangen til sessiondata skal tillades. Opdater denne indstillingsværdi til din applikations domænenavn for at forhindre adgang til sessionoplysninger, hvis der indlæses et script fra en ekstern kilde.

session.save_path = "/ Var / lib / php / session"

Standard gemme stien til sessionfilen kan skrives af alle systembrugere. Placeringen skal skiftes til et mere sikkert bibliotek. Sørg for, at den nye katalogplacering ikke er placeret inden for webroten. Hvis du bruger en filhåndtering som den, der er inkluderet i cPanel, er et let sted at oprette session-biblioteket direkte uden for webroten (dvs. det samme bibliotek, som public_html findes inden for). En anden sikker placering er at oprette kataloget i PHP-biblioteket i “/ var / lib”. Stien afhænger af operativsystemet, dvs. “/ var / lib / php” eller “/ var / lib / php5”. Hvis der har open_basedir-begrænsninger i kraft, skal du sikre dig, at stien til at gemme sessionen er inkluderet i open_basedir-hvidlisten.

session.hash_function = sha512

SHA-512 er en mere sikker hashing-algoritme til oprettelse af session-id’er sammenlignet med standard MD5-hashfunktionen. Denne algoritme er tilgængelig i PHP version 5.3+. Hvis du kører en mindre version af PHP, skal du bruge SHA1-hash-algoritmen i stedet. For at gøre dette skal du indstille “session.hash_function = 1”.

session.bug_compat_42 = 0
session.bug_compat_warn = 0

Deaktivering af disse indstillinger vil sikre, at sessionvariabler ikke kan initialiseres globalt, hvilket forbedrer sikkerheden.

Deaktiver sårbare funktioner

disable_functions = ini_set, php_uname, getmyuid, getmypid, passthru, læk, lytte, diskfreespace, tmpfile, link, ignore_user_abord, shell_exec, dl, set_time_limit, exec, system, highlight_file, source, show_source, fpaththru, virtual_pose_d_pixid posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, posix, _getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_times, posix_ttyname, posix_uname, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate, phpinfo, popen, curl_exec, curl_multi_exec, parse_ini_file, allow_url_fopen, allow_url_include, pcntl_exec, chgrp, chmod, chown, lchgrp, lchown, putenv

Flere PHP-funktioner kan give åbne døre til webapplikationshacks, hvis de ikke bruges omhyggeligt. Hvis du f.eks. Sender forkert validerede input til mange af disse funktioner, resulterer det i sikkerhedsproblemer. Deaktivering af disse funktioner er en simpel og effektiv løsning på problemet. Hvis din applikation imidlertid kræver en af ​​de anførte funktioner, skal du fjerne den fra listen.

Sæbe-cache

soap.wsdl_cache_dir = / var / lib / php / soap_cache

Som med fil uploads og session data, bør SOAP cache data ikke gemmes i standard midlertidige bibliotek. Indstil dette til et mere sikkert bibliotek.

Genstart PHP

Når du har foretaget ændringer i filen php.ini, skal du genstarte webserveren. WHM giver en knap til at genstarte serveren efter redigering af filen. Hvis du ikke bruger et kontrolpanel som WHM, skal du genstarte din server via kommandolinjen. For Apache skal du indtaste kommandoen “sudo apachectl graciøs” og trykke på Enter.

Konklusion

Ved at opdatere disse indstillinger forbliver dit PHP-miljø yderligere beskyttet mod hackforsøg. At sikre dit PHP-miljø fra hackere er et vigtigt skridt for at beskytte dit forretningsomdømme. Husk dog, at et dårligt kodet program altid er en åben dør til hacks, selv med en hærdet PHP-konfiguration. Start med at holde din konfiguration hærdet, og skriv derfra altid sikker applikationskode.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map