Sii daynta Sabuurrada 3.12, falanqaynta joogtada ah ee luqadda PHP. Xakamaynta Alpha ee PHP 8.0

Shirkadda Vimeo la daabacay sii daayo cusub ee analyzer taagan Sabuurradii 3.12, kaas oo kuu ogolaanaya inaad aqoonsato khaladaadka muuqda iyo kuwa qarsoon ee code-ka PHP, iyo sidoo kale si toos ah u saxo noocyada khaladaadka. Nidaamku wuxuu ku habboon yahay in lagu aqoonsado dhibaatooyinka labadaba koodka dhaxalka ah iyo koodka isticmaala qaababka casriga ah ee lagu soo bandhigay laamo cusub oo PHP ah. Xeerka mashruuca wuxuu ku qoran yahay PHP iyo qaybiyey hoos shatiga MIT.

Sabuurku wuxuu tilmaamayaa inta badan dhibaatooyinka la xidhiidha isticmaalka nooca khaldan, iyo sidoo kale kala duwan khaladaadka caadiga ah. Tusaale ahaan, waxay taageertaa digniinaha ku saabsan isku darka doorsoomayaasha noocyada kala duwan ee odhaahda, imtixaanno macquul ah oo khaldan (sida "if ($a && $a) {}", "if ($a && !$a) {}" iyo " haddii ($a) {} elseif ($a) {}"), bilawga aan dhamaystirnayn ee hantida shayga. Falanqeeyuhu wuxuu ku shaqeeyaa qaab isku xiran oo badan. Waa suurtagal in la sameeyo baaritaanno kordhin, kuwaas oo falanqeynaya kaliya faylalka isbeddelay tan iyo sawirkii ugu dambeeyay.

Intaa waxaa dheer, qalabyada barnaamijka oo sugan ayaa la bixiyaa si loo oggolaado Isticmaal tafaasiisha qaabka Docblock ("/** @var Nooca */") si loo bixiyo macluumaadka ku saabsan noocyada doorsoomayaasha, soo celinta qiyamka, cabirrada shaqada, sifooyinka shayga. Qeexida qaababka isticmaalka nooca iyo isticmaalka bayaannada caddaynta sidoo kale waa la taageeray. Tusaale ahaan:

/** @var string | waxba * /
$a = foo();

/** @var string $a */
echo strpos($a, 'hello');

/** @sabuur-sheeg-hadday run tahay B $a */
function isValidB(A $a): bool {
soo celi $a tusaale ahaan B && $a->isValid();
}

Si loo toosiyo ciribtirka dhibaatooyinka la helay, utility Psalter ayaa la bixiyaa, kaas oo taageera plugins iyo Waxa ay u ogolaataa xallin dhibaatooyinka koodka caadiga ah, ku dar faahfaahinta nooca, oo samee wax-is-daba-marin sida ka wareejinta fasallada hal magac oo magac kale, u wareejinta hababka fasallada, iyo beddelidda fasallada iyo hababka.

In arrinta cusub ee Sabuurrada la fuliyay Xulashada "-taint-analysis" waxay kuu ogolaaneysaa inaad raad raacdo xiriirka ka dhexeeya cabbirada wax gelinta ee laga helay isticmaalaha (tusaale, $_GET['name']) iyo isticmaalkooda meelaha u baahan ka baxsashada dabeecadda (tusaale, echo" $magac "), oo ay ku jiraan raadraaca silsiladaha hawlo dhexdhexaadka ah iyo wicitaannada shaqada. Isticmaalka arraysyada associative $_GET, $_POST iyo $_COOKIE waxaa loo arkaa inay yihiin ilaha xogta khatarta ah, laakiin sidoo kale waa suurtagal. qeexitaan ilo u gaar ah. Ficilada u baahan dabagalka baxsadka ah waxaa ka mid ah hawlgallada soo saarista soo saara nuxurka HTML, ku dara madax HTTP, ama fuliya weydiimaha SQL.

Xaqiijinta waxaa loo isticmaalaa marka la isticmaalayo hawlaha sida echo, exec, ku dar iyo madax. Marka la falanqeynayo baahida loo qabo baxsashada, noocyada xogta sida qoraalka, xargaha leh SQL, HTML iyo Shell code, xargaha leh cabbirrada aqoonsiga ayaa lagu xisaabtamayaa. Habka la soo jeediyay wuxuu kuu ogolaanayaa inaad aqoonsato dayacanka koodka u horseedaya qoritaanka goobta (XSS) ama beddelka SQL.

Intaa waxaa dheer, waxaa lagu ogaan karaa bilowgii Imtixaanka alfa ee laanta cusub ee PHP 8.0. Siideynta ayaa loo qorsheeyay November 26-keeda. Waxyaabaha soo socda ayaa laga filayaa laanta cusub: wax cusub, sida:

  • Daar Isku-duwaha JIT, isticmaalka kaas oo hagaajin doona wax soo saarka.
  • taageero noocyada ururka, qeexida ururinta laba ama in ka badan (tusaale, "Foot function dadweynaha foo(Foo|Bar $input): int|float;").
  • taageero sifooyinka (Faadhitaano) oo kuu ogolaanaya inaad ku xidho xogta badan (sida macluumaadka nooca) fasalada adoon isticmaalin docblock syntax.
  • Ereyga la soo gaabiyo qeexida fasalka, taasoo kuu ogolaanaysa inaad isku darsato qeexida dhisaha iyo guryaha.
  • Nooca soo noqoshada cusub - ma guurto ah.
  • Nooc cusub - isku qasan, kaas oo loo isticmaali karo in lagu go'aamiyo in shaqadu aqbasho qiyaasaha noocyada kala duwan.
  • Sifeynta tuur si loo maareeyo waxyaabaha ka reeban.
  • WeakMap in la abuuro walxo la huri karo inta lagu jiro ururinta qashinka (tusaale ahaan, in lagu kaydiyo khasnado aan loo baahnayn).
  • Fursad iyadoo la isticmaalayo odhaah ":: class" shayga (oo la mid ah wacitaanka get_class()).
  • Fursad qeexitaannada ku jira xannibaadda qabsashada ee ka reebanaanshaha ee aan ku xidhnayn doorsoomayaasha.
  • Fursad ka tagitaanka comma ka dib cunsurka u dambeeya ee liiska cabbiraadaha shaqada.
  • Interface cusub Xarri kara si loo aqoonsado nooc kasta ama xog kasta oo loo rogi karo xadhig (kaas oo habka __toString() la heli karo).
  • Muuqaal cusub str_ka kooban(), analoog la fududeeyay ee strpos ee go'aaminta dhacdada xadhig-hoose, iyo sidoo kale hawlaha str_starts_with() iyo str_ends_with() ee lagu hubinayo tartammada bilowga iyo dhammaadka xadhigga.
  • Muuqaal lagu daray fdiv(), kaas oo fulisa hawlgal qaybin iyada oo aan la tuurin khalad marka loo qaybinayo eber.
  • Bedelay string ku biiritaanka macquulka ah. Tusaale ahaan, odhaahda 'echo "sum:" . $a +$b' waxa hore loogu micneeyay 'echo ("sum: " . $a) + $b', iyo gudaha PHP 8 waxa loola dhaqmi doonaa 'echo "sum:" . ($a +$b)'.
  • La adkeeyey hubinta hawlaha xisaabta iyo xoogaa yar, tusaale ahaan, tibaaxaha "[] % [42]" iyo "$ shay + 4" waxay keeni doonaan khalad.
  • La fuliyay Algorithm-soocidda xasilloon kaas oo nidaamka qiyamka isku midka ah lagu ilaaliyo dhammaan orodyada kala duwan.

Source: opennet.ru

Add a comment