ለPHP ቋንቋ የማይለዋወጥ ተንታኝ የሆነው መዝሙረ ዳዊት 3.12 መልቀቅ። የ PHP 8.0 አልፋ ልቀት

Vimeo ኩባንያ ታትሟል የማይንቀሳቀስ analyzer አዲስ ልቀት መዝሙር 3.12በ PHP ኮድ ውስጥ ሁለቱንም ግልጽ እና ስውር ስህተቶችን እንዲለዩ እና አንዳንድ ስህተቶችን በራስ-ሰር እንዲያርሙ ያስችልዎታል። ስርዓቱ በቀድሞው ኮድ እና በአዲስ የPHP ቅርንጫፎች ውስጥ የገቡትን ዘመናዊ ባህሪያትን በሚጠቀም ኮድ ውስጥ ያሉትን ችግሮች ለመለየት ተስማሚ ነው። የፕሮጀክት ኮድ በ PHP እና የተሰራጨው በ በ MIT ፍቃድ.

መዝሙር ከተሳሳተ የአይነት አጠቃቀም እና እንዲሁም ከተለያዩ ችግሮች ጋር የተያያዙትን አብዛኛዎቹን ችግሮች ይለያል የተለመዱ ስህተቶች. ለምሳሌ፣ የተለያዩ አይነት ተለዋዋጮችን በአረፍተ ነገር ውስጥ ስለመቀላቀል ማስጠንቀቂያዎችን ይደግፋል፣ የተሳሳቱ አመክንዮአዊ ሙከራዎች (እንደ "ከሆነ ($a &&$a) {}", "ከ ($a && !$a) {}" እና " ከሆነ ($a) {} elseif ($a) {}")፣ ያልተሟላ የነገር ንብረቶች ጅምር። ተንታኙ ባለብዙ-ክር ሁነታ ይሰራል። ከመጨረሻው ፍተሻ በኋላ የተቀየሩትን ፋይሎች ብቻ የሚተነትኑ ተጨማሪ ፍተሻዎችን ማካሄድ ይቻላል።

በተጨማሪም ለመፍቀድ ደህንነታቸው የተጠበቀ የፕሮግራሚንግ መሳሪያዎች ቀርበዋል። መጠቀም በቅርጸቱ ውስጥ ማብራሪያዎች ዶክብሎክ ("/** @var አይነት */") ስለተለዋዋጭ ዓይነቶች፣የመመለሻ ዋጋዎች፣የተግባር መለኪያዎች፣የነገር ባህሪያት መረጃ ለመስጠት። የአጠቃቀም አይነትን መግለጽ እና የማስረጃ መግለጫዎችን መጠቀምም ይደገፋል። ለምሳሌ:

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

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

/** @ መዝሙረ ዳዊት - እውነት ከሆነ B $a */
ተግባር isValidB(A $a): bool {
ተመላሽ $ አንድ ምሳሌ B & & $ a-> isValid ();
}

የተገኙ ችግሮችን በራስ ሰር ለማጥፋት፣ፕለጊን እና ፕለጊኖችን የሚደግፍ የPsalter utility ቀርቧል። ይህ ይፈቅዳል የተለመዱ የኮድ ችግሮችን መላ መፈለግ፣ የአይነት ማብራሪያዎችን ማከል እና ክፍሎችን ከአንድ የስም ቦታ ወደ ሌላ ማዛወር፣ በክፍል መካከል ዘዴዎችን ማንቀሳቀስ እና ክፍሎችን እና ዘዴዎችን መሰየም ያሉ ማባበያዎችን ያከናውኑ።

በአዲሱ የመዝሙር እትም ተተግብሯል የ"-taint-analysis" አማራጭ ከተጠቃሚው በተቀበሉት የግቤት መመዘኛዎች (ለምሳሌ $_GET['ስም']) እና ቁምፊን ማምለጥ በሚፈልጉ ቦታዎች (ለምሳሌ echo") መካከል ያለውን ግንኙነት ለመፈለግ ይፈቅድልዎታል። የ$ ስም ") ፣ የመካከለኛ ሥራዎችን እና የተግባር ጥሪዎችን በመከታተል ላይ ጨምሮ። የ$_GET፣ $_POST እና $_COOKIE አጎራባች ድርድሮችን መጠቀም እንደ አደገኛ የመረጃ ምንጮች ተደርገው ይወሰዳሉ፣ነገር ግን እንዲሁ ይቻላል ትርጉም የራሱ ምንጮች. የማምለጫ ክትትልን የሚሹ እርምጃዎች HTML ይዘት የሚያመነጩ፣ HTTP ራስጌዎችን የሚያክሉ ወይም የSQL መጠይቆችን የሚያስፈጽሙ የውጤት ስራዎችን ያካትታሉ።

ማረጋገጫ እንደ echo፣ exec፣ ማካተት እና ራስጌ ያሉ ተግባራትን ሲጠቀም ጥቅም ላይ ይውላል። የማምለጫ አስፈላጊነትን በሚተነተንበት ጊዜ እንደ ጽሑፍ ያሉ የውሂብ ዓይነቶች ፣ ሕብረቁምፊዎች ከ SQL ፣ HTML እና Shell ኮድ ፣ የማረጋገጫ መለኪያዎች ጋር ሕብረቁምፊዎች ግምት ውስጥ ይገባል። የታቀደው ሁነታ በኮዱ ውስጥ ወደ ተሻጋሪ ስክሪፕት (XSS) ወይም የ SQL ምትክ ተጋላጭነቶችን እንዲለዩ ያስችልዎታል።

በተጨማሪም, ሊታወቅ ይችላል ጀምር የአዲሱ ፒኤችፒ 8.0 ቅርንጫፍ የአልፋ ሙከራ። ልቀቱ ለኖቬምበር 26 ተይዞለታል። በአዲሱ ቅርንጫፍ ውስጥ የሚከተሉት ይጠበቃሉ. ፈጠራዎችእንደ:

  • በማንቃት ላይ JIT ማጠናከሪያ, አጠቃቀሙ ምርታማነትን ያሻሽላል.
  • ድጋፍ የሕብረት ዓይነቶች፣ የሁለት ወይም ከዚያ በላይ ዓይነቶች ስብስቦችን መግለጽ (ለምሳሌ፣ “የሕዝብ ተግባር foo(Foo|Bar $input): int|float;”)።
  • ድጋፍ ባህሪያት (ማብራሪያዎች) የዶክብሎክ አገባብ ሳይጠቀሙ ሜታዳታን (እንደ መረጃ አይነት) ከክፍሎች ጋር እንዲያገናኙ የሚያስችልዎ።
  • አጭር አገባብ የክፍል ፍቺዎች, የግንባታ እና ንብረቶችን ትርጉም እንዲያጣምሩ ያስችልዎታል.
  • አዲስ የመመለሻ አይነት - የማይንቀሳቀስ.
  • አዲስ ዓይነት - የተቀላቀለ, ይህም አንድ ተግባር የተለያዩ አይነት መለኪያዎችን መቀበሉን ለመወሰን ሊያገለግል ይችላል.
  • መግለጫ ይጥፉ ልዩ ሁኔታዎችን ለመቆጣጠር.
  • ደካማ ካርታ በቆሻሻ መጣያ ጊዜ (ለምሳሌ አላስፈላጊ መሸጎጫዎችን ለማከማቸት) መስዋዕት የሚሆኑ ነገሮችን ለመፍጠር.
  • ዕድል ለዕቃዎች ":: ክፍል" የሚለውን አገላለጽ በመጠቀም (ከመደወል get_class() ጋር ተመሳሳይ)።
  • ዕድል ከተለዋዋጮች ጋር ያልተያያዙ ልዩ ሁኔታዎችን በመያዝ ውስጥ ያሉ ትርጓሜዎች።
  • ዕድል በተግባራዊ መለኪያዎች ዝርዝር ውስጥ ካለው የመጨረሻው አካል በኋላ ኮማ መተው።
  • አዲስ በይነገጽ ሊጣበጥ የሚችል ወደ ሕብረቁምፊ (የ __toString () ዘዴ የሚገኝበትን ማንኛውንም የሕብረቁምፊ ዓይነቶች ወይም ውሂብ ለመለየት።
  • አዲስ ባህሪ str_ ይይዛል()የንዑስ ሕብረቁምፊ መከሰትን ለመወሰን ቀለል ያለ የ strpos አናሎግ እንዲሁም በሕብረቁምፊ መጀመሪያ እና መጨረሻ ላይ ግጥሚያዎችን ለመፈተሽ str_starts_with() እና str_ends_with() ተግባራቶች።
  • የተጨመረ ባህሪ fdiv(), በዜሮ ሲካፈል ስህተት ሳይጥል የማካፈል ስራን ያከናውናል.
  • ተለውጧል ሕብረቁምፊ መቀላቀል አመክንዮ. ለምሳሌ 'echo "sum:" የሚለው አገላለጽ። $a +$b' ቀደም ሲል 'echo ("sum: ". $a) +$b' ተብሎ ተተርጉሟል፣ እና በPHP 8 እንደ 'echo"sum:" ይያዛል። ($a +$b)'
  • ተጣብቋል የሂሳብ እና የቢት ስራዎችን መፈተሽ፣ ለምሳሌ "[] % [42]" እና "$object + 4" የሚሉት አባባሎች ስህተትን ያስከትላል።
  • ተተግብሯል። ተመሳሳይ እሴቶች ቅደም ተከተል በተለያዩ ሩጫዎች ላይ የሚቀመጥበት የተረጋጋ የመደርደር ስልተ-ቀመር።

ምንጭ: opennet.ru

አስተያየት ያክሉ