ዋጋ ሊያስከፍልዎት የሚችል የጠፋ ቼክ፡ Requests.get እና Flask Request Form
እስቲ አስቡት፦ አንድ ጁኒየር ገንቢ አንድን ባህሪ ለመላክ ጫና ውስጥ እየሠራ ነው። የፍላስክ መተግበሪያን ይከፍታሉ፣ አዲስ መንገድ ያክላሉ፣ የጥያቄ መለኪያ ይይዛሉ እና ይቀጥሉ።
በመጀመሪያ ሲታይ፣ ይህ የፍላክስ ጥያቄ አጠቃቀም ጥሩ ይመስላል። ግን ችላ በሉት አይነት=int እና በሩን ትከፍታለህ የመርፌ ጥቃቶች። እነዚህ የኮድ ግምገማዎችን የሚያልፉ አደጋዎች ናቸው ምክንያቱም "ዋጋን ብቻ ስለሚያመጣ"።
አደጋው የሚደበቅበት ቦታ Fየላስት ጥያቄ ና Fየላስት የጥያቄ ቅጽ
ሁለቱም ፍላክስ.ጥያቄ ና ፍላስክ.ጥያቄ.ፎርም የማይታመኑ የመግቢያ ነጥቦች ናቸው። የሚያገኙት እያንዳንዱ እሴት በቀጥታ ከደንበኛው የሚመጣ ሲሆን እንደ ጠላት ሊቆጠር የሚችል ተደርጎ መታየት አለበት።
ይህንን መረጃ ማረጋገጥ ወይም ማጽዳት አለመቻል የሚከተሉትን ጨምሮ ወደ ወሳኝ የደህንነት ችግሮች ሊያመራ ይችላል፡
እነዚህ አደጋዎች ለመረጃ ቋቶች ወይም ለቅድመ-መጨረሻ አቀራረብ ብቻ የሚተገበሩ አይደሉም፤ አጥቂዎች በአብነት ውስጥ ጥቅም ላይ የዋሉ ግብዓቶችን ሊጠቀሙ ወይም ወደ ንዑስ ሂደቶች ሊተላለፉ ይችላሉ።
ደህንነቱ የተጠበቀ የውሸት ኮድ ቅጦች፡
መከላከል CI/CD ማስፈጸሚያ፡
አገባቡ ደህንነቱ የተጠበቀ ቢመስልም፣ በአብነቶች ወይም በስርዓት ትዕዛዞች ውስጥ ጥሬ ወይም ያልተመረጡ እሴቶችን መጠቀም ከባድ የመርፌ ቬክተር ሊሆን ይችላል።
ተግባራዊ የመርፌ ፍሰት (ደህንነቱ የተጠበቀ ማስመሰል)
የመርፌ ጉድለት በተለምዶ እንዴት እንደሚከሰት፣ ልብ ወለድ እና ደህንነቱ የተጠበቀ ሁኔታ በመጠቀም እነሆ፡
- አንድ ተጠቃሚ የተቀረጸ የጥያቄ መለኪያ ወደ መተግበሪያው ይልካል።
- መተግበሪያው እሴቱን በመጠቀም ያነባል request.args.get() ያለ ማረጋገጫ።
- ያ እሴት በቀጥታ ከ SQL መጠይቅ፣ ከቴምፕል ስትሪንግ ወይም ከሼል ትዕዛዝ ጋር ይገናኛል።
- ስርዓቱ የተወጋውን ይዘት ሳያውቅ ያንን አመክንዮ ያስፈጽማል።
የውሸት ኮድ (ደህንነቱ ያልተጠበቀ፣ ምሳሌያዊ ብቻ)፦
ምናባዊ የሎግ ዱካ፦
ምንም እንኳን ይህ ምሳሌ የቦታ መያዣዎችን የሚጠቀም ቢሆንም፣ በግብዓት አያያዝ ላይ ያሉ ትናንሽ ጉድለቶች እንዴት ወሳኝ ተጋላጭነቶችን ሊያስከትሉ እንደሚችሉ ያንፀባርቃል።
አውቶማቲክ ሙከራዎች ብዙውን ጊዜ የተበላሹ ወይም ተንኮል አዘል ያልሆኑትን ሳይሆን ትክክለኛ የግቤት አይነቶችን ስለሚፈትሹ ይህንን ሊያመልጡ ይችላሉ።
ጥገኝነት በሚያስፈልጋቸው ሰዎች ላይ የተደበቁ አደጋዎችን መጠቀም የፍላሽ ጥያቄ ና የፍላክ መጠየቂያ ቅጽ
ኮድዎ ንጹህ ሊሆን ይችላል፣ ነገር ግን የሶስተኛ ወገን ፓኬጆች አሁንም ሊያበላሹዎት ይችላሉ።
አንዳንድ የፍላክስ ተሰኪዎች ወይም ቤተ-መጻሕፍት ያለ ማረጋገጫ የፍላክስ ጥያቄ ወይም የፍላክስ ጥያቄ ቅጽን በውስጥ ይደውላሉ።
ምሳሌ ከምናባዊ ፓኬጆች ጋር፦
In CI/CD, አውቶማቲክ የጥገኝነት ዝማኔዎች ደህንነታቸው ያልተጠበቁ ጥያቄዎችን በጸጥታ ሊያስተዋውቁ ይችላሉ። ጥሪዎችን ወይም ተጋላጭ የሆኑ የግቤት አያያዝ ቅጦችን ያግኙ።
እንዴት ደህንነቱ የተጠበቀ አይደለም የፍላሽ ጥያቄ የአጠቃቀም መዝገቦች ያለፉ የኮድ ግምገማዎች
በፍጥነት በሚንቀሳቀሱ አካባቢዎች፣ ትናንሽ ግን አደገኛ ስህተቶች ብዙውን ጊዜ ሳይስተዋል ይቀራሉ፣ በተለይም ለውጡ ምንም ጉዳት የሌለው በሚመስልበት ጊዜ።
ለምሳሌ pull request ልዩነት፡
የገምጋሚ አስተያየት፡
«ጥሩ ይመስላል፣ መለኪያ ብቻ እያገኘ ነው።»
እንዲህ ዓይነቱ ቸልተኝነት የተለመደ ነው ምክንያቱም በሚከተሉት ምክንያቶች
- የእውቀት (ኮግኒቲቭ) አድልዎ: ገምጋሚዎች request.args.get() በነባሪነት ደህንነቱ የተጠበቀ ነው ብለው ሊገምቱ ይችላሉ።
- የጊዜ ግፊት: የጊዜ ገደቦች ሲመጡ የደህንነት ፍተሻዎች ወደ ኋላ ይመለሳሉ።
- ልዩነት መተዋወቅ: ለውጡ ትንሽ ይመስላል፣ ስለዚህ ጥልቅ ምርመራ አያደርግም።
ግልጽ የሆኑ ደንቦች ወይም አውቶማቲክ ማስፈጸሚያዎች ከሌሉ፣ እነዚህ ስውር አደጋዎች ሳይስተዋል ወደ ምርት ይገባሉ።
የሚሰራ መከላከያ
የመርፌ አደጋዎችን ለመቀነስ፣ የግብዓት ማረጋገጫን፣ አውቶማቲክ ቅኝትን እና የሙከራ ሽፋንን ያጣምሩ።
የግቤት ማረጋገጫ ከቀረጻ እና ከተፈቀደላቸው ዝርዝር ጋር፦
casting እሴቱን ደህንነቱ የተጠበቀ አይነት እንዲያደርግ ያስገድደዋል፣ ነገር ግን በተፈቀደላቸው ዝርዝር ውስጥ ማስቀመጥ የሚታወቁ ጥሩ እሴቶች ብቻ እንዲቀጥሉ ያረጋግጣል።
የማይንቀሳቀስ የመተግበሪያ ደህንነት ሙከራ (SAST) ውስጥ CI/CD:
ይህ እርምጃ ያልተረጋገጡትን ለመለየት ይረዳል request.args.get() or request.form.get() ወደ ምርት ከመድረሳቸው በፊት ጥሪዎች።
የንፅህና አጠባበቅን ለማስፈፀም የክፍል ሙከራዎች፡
እነዚህ ሙከራዎች መተግበሪያው የተበላሸ ወይም ተንኮል አዘል ግብዓትን በተከታታይ ውድቅ ማድረጉን ያረጋግጣሉ።
ከ DevSecOps ጋር መዋሃድ Pipelines
የመካከለኛ ሶፍትዌር አፈፃፀም፡
@app.before_request
የእርስዎን ኮድ እና የሶስተኛ ወገን ጥገኞችን በመቃኘት ላይ ደህንነቱ ያልተጠበቀ ጥያቄዎችን ለማግኘት፣ የፍላሽ ጥያቄ እና የፍላሽ ጥያቄ ቅጽ ከመምጣቱ በፊት ለመጠቀም ይረዳል።
ይህ ችግር ከፍላስክ አልፎ ይሄዳል
ደህንነቱ ያልተጠበቀ የግቤት አያያዝ ለፍላስክ ብቻ የተወሰነ አይደለም፤ በድር ማዕቀፎች ውስጥ ይገኛል። እንደ እድል ሆኖ፣ መፍትሄው ወጥነት ያለው ነው፡ ግብዓቶችን ቀደም ብሎ እና በጥብቅ ያረጋግጡ።
ጃንጎ (ደህንነቱ የተጠበቀ የውሸት ኮድ):
ፈጣን ኤፒአይ (በዲዛይን አይነት ፍንጮችን በመጠቀም ደህንነቱ የተጠበቀ)
ሁለቱም ምሳሌዎች የግቤት አይነት እና ክልልን ያስገድዳሉ፣ ይህም ገቢው መረጃ ሚስጥራዊ አመክንዮ ላይ ከመድረሱ በፊት አስተማማኝ መሆኑን ያረጋግጣል።
Flask፣ Django ወይም FastAPI ይሁን፣ እያንዳንዱ የጥያቄ መለኪያ በአግባቡ ካልተረጋገጠ ሊፈጠር የሚችል የመርፌ ነጥብ ነው።
በDevSecOps ውስጥ ለመለየት Xygeniን መጠቀም
በDevSecOps አካባቢ፣ በእጅ የሚሰጡ ግምገማዎች በቂ አይደሉም። ዚጌኒ ደህንነቱ ያልተጠበቀ የፍላሽ ጥያቄ፣ የፍላሽ ጥያቄ ቅጽ እና የጥያቄዎች አጠቃቀምን በራስ-ሰር ያዘጋጃል።
ተግባራዊ የDevSecOps መተግበሪያዎች፡
- የማይንቀሳቀሱ ቅኝቶች: ማንኛውንም ይጠቁማል request.args.get() ያለ አይነት=እና የፍላሽ ጥያቄ ቅጽ ጥሪዎች ማረጋገጫ የሌላቸው።
- የጥገኝነት ትንተና፦ በተዘዋዋሪ ጥሪዎች ሊታዩ የሚችሉ ደህንነታቸው ያልተጠበቁ ቅጦችን ቤተ-መጽሐፍትን ይቆጣጠራል።
- ደህንነታቸው ያልተጠበቁ ውህዶችን ማገድ: CI/CD አዲስ ኮድ አደገኛ ጥያቄዎችን ካስተዋወቀ አይሳካም። ያግኙ ወይም ያልተረጋገጠ የቅጽ መዳረሻ።
- መሰረታዊ ማስፈጸሚያ፦ ደህንነታቸው የተጠበቀ ጥሪዎች ወደ ደህንነታቸው ያልተጠበቁ እንዳይሆኑ ለማድረግ የተደረጉ ለውጦችን ይከታተላል።
እነዚህን ቼኮች በራስ-ሰር ማድረግ የሰውን ስህተት የመጋለጥ እድልን ይቀንሳል እና አቅርቦትን ሳያዘገዩ ደህንነትን ቀጣይነት ባለው መልኩ ያቆያል።
ስለዚህ፣ አረጋግጥ፣ አጽዳ፣ አውቶማቲክ አድርግ
ዋናው ነጥብ ይኸውና፡ requests.get፣ flask request እና flask request ፎርም ሁሉም ናቸው። በነባሪነት የማይታመንእርምጃ ካልወሰዱ በስተቀር ተንኮል አዘል መረጃዎችን በደስታ ያደርሳሉ።
ሶስት ህጎችህ፡-
- ማረጋገጫ ግብዓቶች ቀረጻ እና የነጭ ዝርዝሮችን በመጠቀም።
- ንጽሕና ውሂቡ ሚስጥራዊ የሆኑ ስራዎችን ከመንካቱ በፊት።
- ራስ-ሰር ቼኮች በአንተ ውስጥ pipeline ከማሰማራቱ በፊት ደህንነቱ የተጠበቀ ኮድን ለማስቆም።
አንድ ደህንነቱ ያልተጠበቀ የፍላሽ ጥያቄ ተቆጣጣሪ፣ ያልተመረጠ የፍላሽ ጥያቄ ቅጽ መስክ ወይም ያልተጠበቀ የጥያቄዎች ማግኘያ ጥሪ መተግበሪያዎን ሊያበላሽ ይችላል። እያንዳንዱን መለኪያ እንደ ጠላት ሊቆጥሩት ይችላሉ፣ እና የእርስዎን DevSecOps ይፍቀዱለት። pipeline ደንቦቹን በየጊዜው ተግባራዊ ማድረግ።




