Ndụmọdụ nchekwa nchekwa siri ike nke PHP maka sava Linux


Ọ bụghị ihe nwute na PHP bụ otu n'ime asụsụ mmemme scripting nkesa na-ejikarị. Ọ bụ ihe ezi uche dị na onye na-awakpo ịchọta ụzọ dị iche iche ọ ga-esi na-emegharị PHP dịka a na-ejikọta ya na MySQL ma mee ka ịnweta data nzuzo nke ndị ọrụ gị.

N'ụzọ ọ bụla, anyị anaghị ekwu na PHP adịghị ike ma ọ bụ nwee nsogbu ụfọdụ na ndabara mana anyị ga-ahụrịrị na anyị na-atụgharị PHP n'ụzọ ọ ga-esi sie ike karịa mgbe ọ bụla.

1. Wepụ enweghị mkpa modul PHP

Site na ndabara, ị ga-enweta modul PHP nke nwere ike inye aka na ọrụ dị iche iche mana ụfọdụ modul na-enweghị isi nwere ike ọ gaghị aba uru maka ọrụ ọ bụla. Iji depụta modul PHP dị, jiri iwu enyere:

$ php -m

Modul ndị ahụ dị na /etc/php.d/ ndekọ ma nwee ike ịgbanwe akwụkwọ ndekọ aha ugbu a na /etc/php.d/ site n'iji iwu cd na-esonụ.

cd /etc/php.d/

Ihe kpatara na anyị na-agbanwe ndekọ na-ewepụ modul bụ modul na-aha nnọọ iche na mbụ ndekọ. Ugbu a, depụta modul dị site na iwu enyere:

$ ls

Dịka ọmụmaatụ, ka anyị wepụ modul curl site na iji iwu enyere:

$ sudo rm -r 20-curl.ini

2. Gbanyụọ mmebe koodu PHP dịpụrụ adịpụ

Ọtụtụ mgbe, njikọ ndị dịpụrụ adịpụ enweghị ike ịtụkwasị obi. Site n'ịkwụsị ịnweta fopen wrappers, ha nwere ike ịnweta faịlụ mpaghara. Iji gbanyụọ fopen, anyị kwesịrị imepe faịlụ nhazi PHP site na iji iwu enyere:

$ sudo nano /etc/php.ini

Ugbu a, jiri CRTL + w wee pịnye allow_url_fopen nke ga-ebute anyị n'ahịrị akọwapụtara ebe anyị ga-ewepụ nhọrọ ndị ahụ.

allow_url_fopen=Off
allow_url_include=Off

Ozugbo ịmechara mgbanwe, chekwaa faịlụ nhazi site na CTRL + O wee pịa Tinye.

3. Gbanyụọ mgbapụta ozi PHP

Mgbe enweghị nkwarụ, ụwa nwere ike ịchọpụta ụdị PHP nke sava weebụ anyị na-eji ugbu a. Nke a nwere ike ọ gaghị ada dị ka nnukwu ihe mana ime ka onye na-awakpo mara ụdịdị ahụ nwere ike ịdị ize ndụ.

$ sudo nano /etc/php.ini

Ugbu a, gbanwee ndabara ka ọ bụrụ Gbanyụọ.

expose_php=Off

4. Gbanyụọ ndekọ njehie PHP

Site na ndabara, ndị ọbịa anyị na-ahụ njehie ọ bụla nke sava weebụ anyị, gụnyere ndị mwakpo. Iji hụ na ọ nweghị onye ọ bụla n'ime njehie ahụ, anyị ga-eme mgbanwe na faịlụ nhazi PHP anyị.

$ sudo nano /etc/php.ini

Ma gbanwee ntọala ndabara nke igosipụta ndekọ njehie ka ọ bụrụ Gbanyụọ.

display_errors = Of

Ma gịnị ma ọ bụrụ na ị bụ onye mmepụta na mkpa ịnweta ndekọ njehie iji merie nsogbu mmepe? Echegbula onwe gị, enwere ụzọ ị ga-esi nweta faịlụ ndekọ gị site na ịme obere mgbanwe n'otu faịlụ nhazi ahụ.

Anyị ga-eme ka log_errors wee nye ụzọ njehie_log ebe a ga-echekwa faịlụ ndekọ anyị.

log_errors=On
error_log=/var/log/httpd/php_scripts_error.log

5. PHP Resource Control

Dị ka anyị si kwuo, ijikwa akụrụngwa bụ akụkụ kachasị mkpa mgbe ị na-echekwa PHP. N'ebe a, anyị ga-ekenye oge igbu oge, oge ntinye, na oke ebe nchekwa, yabụ ọ bụrụ n'ụzọ ụfọdụ emebie edemede anyị, a ga-akwụsị ogbugbu ahụ ka oge ụfọdụ gachara.

Anyị ahọrọla sekọnd 25 maka igbu oge na oge ntinye yana 30MB nke oke ebe nchekwa. O doro anya na ị nwere ike hazie ya dịka mkpa gị si dị.

max_execution_time = 25
max_input_time = 25
memory_limit = 30M

6. Machibido PHP File Access

Iji gbochie ịnweta faịlụ, anyị ga-eme ka open_basedir nke ga-ahụ na PHP nwere ike ịgụnye naanị faịlụ sitere na akwụkwọ ndekọ aha anyị edepụtara.

Ihe dị mkpa: Nke a ga-egbochi akwụkwọ ndekọ aha ndị ọzọ niile ma chọọ ka anyị jiri aka tinye akwụkwọ ndekọ aha dị mkpa nke gụnyere ịgbakwunye faịlụ nwa oge na akwụkwọ ndekọ aha oge.

open_basedir = "/home/sagar/public_html:/var/lib/php/tmp_upload:/var/lib/php/session"

7. Hazie PHP File Uploads

Ọ bụrụ na ngwa gị anaghị achọ ibugo faịlụ site na njedebe onye ọrụ, a na-adụ ọdụ ka ị gbanyụọ nbudata faịlụ. Nke a na-egbochi ndị na-awakpo ibulite scripts dị ize ndụ nke nwere ike mebie ngwa niile na njedebe.

file_uploads = Off

Mana gịnị ma ọ bụrụ na emebere ngwa gị iji nweta faịlụ site na njedebe onye ọrụ? N'okwu ahụ, ị ga-eme ka nbudata faịlụ mana gbalịa ibelata ohere kachasị ma belata ọnụ ọgụgụ faịlụ kachasị elu nke enwere ike ibugo site na otu arịrịọ.

file_uploads = On
upload_max_filesize = 1M
max_file_uploads = 1

Na PHP, site na ndabara, a na-etinye faịlụ nwa oge na ndekọ nke ndị ọrụ sistemụ niile nwere ike ide. A ghaghị ịgbanwere ọnọdụ ndabara gaa na ebe dị nchebe ma hụ na ọ dịghị n'ime mgbọrọgwụ weebụ.

Dị ka anyị tinye n'ọrụ open_basedir, anyị ga na-eji otu ebe dị ka anyị na-ama whitelisted ya.

upload_tmp_dir = /var/lib/php/tmp_upload

8. Gbanyụọ Ọrụ PHP dị ize ndụ

PHP nwere ọrụ dị iche iche enyere na ndabara ma nwee ike inye aka maka ebumnuche mmepe. Mana ọtụtụ ọrụ nwere ike iji ndị na-agba ọsọ na-erigbu ihe nkesa webụ anyị na imebi ha ga-agbakwunye nchekwa nchekwa.

Anyị nwere usoro ọrụ nwere nkwarụ ma hụ na ị ga-enyocha ha tupu ịme mgbanwe na faịlụ nhazi.

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

9. Gbanwee ndekọ cache SOAP

Dịka anyị gbanwere ndekọ tempụl na nnọkọ ndabara, otu ihe ahụ na-emetụta cache SOAP ebe ọ bụ na ekwesighi ịchekwa ya na ndekọ aha ndabara. Gbaa mbọ hụ na echekwara ya na ebe nchekwa.

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

10. Jikwaa PHP POST Size

Site n'ịchịkwa nha POST, anyị nwere ike chekwaa ihe nkesa anyị n'aka onye ọchụnta ego na-anwa imechi akụrụngwa nkesa site na izipu nnukwu faịlụ. Nke a na-azọpụta anyị site na mkpọka nkesa na-achọghị yana oge nzaghachi ngwa ngwa.

post_max_size=4M

11. Chebe PHP nhazi

Ka anyị na-ewepụ faịlụ ndị na-adịghị mkpa, anyị na-ewepụkarị ụfọdụ faịlụ dị mkpa ma ọ bụ ọbụna akwụkwọ ndekọ aha. Ya mere, anyị ga-emerịrị ntọala n'ụzọ nke na ọbụna ndị ọrụ mgbọrọgwụ enweghị ike ihichapụ ha. Iji mepụta faịlụ na akwụkwọ ndekọ aha, anyị ga-eji chattr nwere ọkọlọtọ dị iche iche.

Ozugbo i jiri iwu enyere, ị nweghịzi ike ịgbanwe otu faịlụ ma ọ bụ wepụ ya.

$ sudo chattr +i /etc/php.ini

Mgbe ị na-agbalị iwepu faịlụ na-enweghị mgbanwe, ọ ga-egosi mperi na-asị \Achọghị ọrụ.

$ sudo rm -r /etc/php.ini

Ma gịnị ma ọ bụrụ na ịchọrọ ịnọgide na-ede faịlụ ndị ahụ ka ị na-eme ka ha ghara ime mgbanwe? Ị nwere ike ime nke ahụ n'ụzọ dị mfe site na iji ọkọlọtọ +a kama iji +i.

$ sudo chattr +a /etc/php.ini

Enwere ike ịnwe oge ụfọdụ ebe ị na-achọkwaghị faịlụ nhazi ochie na n'ọnọdụ ahụ, anyị ga-ewepụrịrị njirimara.

$ sudo chattr -i /etc/php.ini

N'otu aka ahụ, ọ bụrụ na i jiri àgwà +a mee ka faịlụ ghara ịgbanwe, ị nwere ike tụgharịa ya site na iji iwu enyere:

$ sudo chattr -a /etc/php.ini

12. Jiri SSL Asambodo maka HTTPS

N'oge a, ihe nchọgharị ọgbara ọhụrụ ọ bụla dị ka Google Chrome, Firefox, Opera, na ndị ọzọ na-akwado iji HTTPS maka sava weebụ. Dị ka HTTPS na-enye ọwa nnweta echekwara na ezoro ezo maka saịtị enweghị ntụkwasị obi, anyị nwere ike ịnye ndị ọrụ anyị ahụmịhe a pụrụ ịdabere na ya.

Site n'ịgbakwunye HTTPS, anyị nwere ike nweta nchebe pụọ na mwakpo XSS gụnyere igbochi ndị na-agba ọsọ ka ha gụọ data ebufere site na iji koodu.

Iji mee ka HTTPS nwee ike, anyị ga-arụnye ma jiri Asambodo SSL n'efu Ka anyị Encrypt na sava.

$ sudo dnf install epel-release 
$ sudo dnf install certbot python3-certbot-apache mod_ssl
$ sudo certbot --apache -d domain.com   [For Apache]
$ sudo certbot --nginx -d domain.com    [For Nginx]

13. Melite PHP mgbe niile

Ebe ọ bụ asụsụ mepere emepe, a na-akwachi ya ihe fọrọ nke nta ka ọ bụrụ kwa ụbọchị. O nwere ike ọ gaghị adị ka ihe dị mkpa mana ọ nwere ike ịzọpụta gị n'oke adịghị ike. Ya mere jide n'aka na ị ga-edobe ngwugwu PHP gị nke ga-azọpụta gị n'ọtụtụ adịghị ike.

# yum update & yum upgrade    [On RHEL-based systems]
# apt update && apt upgrade   [On Debian-based systems]

Nke a bụ echiche anyị banyere otu ị ga-esi kwalite nchekwa PHP na sistemụ Linux ngwa ngwa. N'ime nkuzi a, anyị gbalịrị ime ka ihe dị mfe dịka anyị nwere ike ma ọ bụrụ na ị ka nwere obi abụọ, biko mee ka anyị mara na nkọwa.