SQL Injection ክፍተትን በማኑዋል ማረጋገጫ መስፈርት ማድረግ፣ የድር ጣቢያው የፎርም፣ URL ፓራሜትር፣ ኩኪ፣ የፍለጋ ሳጥን ወይም API ግባ የውስጥ የዳታቤዝ ጥያቄዎችን ያቀናበሩን እንደሆነ በተደላይነትና በፈቃድ ማረጋገጫ ሂደት ነው። ለWebmaster ዓላማ፣ ግፊ ማድረግ ሳይሆን፣ የስህተት መልእክት፣ የተለመዱ አልሆኑ ምላሾች፣ ያልታሰበ የማጣጣሪያ ባህሪ ወይም የጥያቄ ሎጅክ ተሰናክላ እንደሆነ በፍጥነት ማድረግ፣ ከዚያም በፓራሜትር የተዘጋጁ ጥያቄዎች፣ የግባ ማረጋገጫ፣ የፍቃድ ገደብና የደህንነት አስተዳደር የሰርቨር ቅንብር በማድረግ ክፍተቱን በቋሚነት ማጠናከር ነው።
ይህ መሪ ማገደል፣ የተስተናጋጁ የደንበኛ ዳታ አይጠፋ ሳይሆን በመተግበሪያ ዘዴ የተመሰረተ የመከላከያ ዝርዝር ያቀርባል። ፈተናዎቹን በራስዎ ሳይታወቀ ድር ጣቢያ፣ በደህንነት ፈቃድ ያላቸው ፕሮጀክቶች ወይም በstaging አካባቢ ብቻ አትሞክሩ። የዳታ መስያዝ፣ የመታወቂያ መለያየት ማስያዝ፣ የታቦሎች ማግኘት ወይም በያልተፈቀደ ሲስተሞች ላይ ሙከራ ማድረግ የዚህ መስክ አይደለም። በዚህ ቅርብ አቀራረብ፣ ምልክቶችን ማወቅ፣ ማስረጃን በዝቅተኛ መጠን ማድረግ፣ ማጠናከርን ማስፈጸምና እንደገና ፈተና ማድረግ ነው።
SQL Injection ምንድነው? ለWebmaster ለምን አስፈላጊ ነው?
SQL Injection የተቀበለውን የተጠቃሚ መረጃ ያለ ደህንነት ማለፍ እና በSQL ጥያቄ ውስጥ መጨመር የሚፈጠረው የደህንነት ችግር ነው። ለምሳሌ፣ የፍለጋ ፎርም፣ የማጣሪያ ፎርም፣ የምርት መግለጫ፣ የግባ ፎርም፣ የትዕዛዝ መፈለጊያ ወይም የመምሪያ ፓነል ዝርዝር የሚያሳይ ቦታዎች ተጠቃሚ ግብዣ በውስጥ ማውጫ ጥያቄን ለውጥ ከቻሉ ህይወት አይደለም። ውጤቱ፣ የመረጃ ፈታ፣ ያልተፈቀደ እንቅስቃሴ፣ የይዘት ማቀድ፣ የተጠቃሚ መለያዎች መያዝ ወይም ሳይቱ በሙሉ አግድ ሊሆን ይችላል።
በOWASP Top 10 ዝርዝሮች ውስጥ injection ክፍል ብዙ ዓመት ከፍተኛ ደረጃ ላይ ነው። ከትንሽ ብሎግ እስከ e-commerce መዋቅር በሚል የፕሮጀክት ሁሉ ይጎዳ ይችላል። በተለይም አሮጌ PHP መተግበሪያዎች፣ ያልታደሱ መደበኛ እባክዎች፣ በተለይ የተጻፉ የመምሪያ ፓነሎች፣ የተሳሳተ የORM አጠቃቀም እና ያልተሳካ API ጣቢያዎች ጥያቄ ይደርሳሉ። የደህንነት የማስተናገድ ደረጃ ብቻውን የህይወት ችግርን ማስወገድ አይችልም፤ ነገር ግን ዘመናዊ PHP ሥሪቶች፣ የተለየ ማስተናገድ መለያዎች፣ WAF፣ በቅድሚያ ቅጂ ማድረግ እና SSL ያሉ መቆጣጠሪያዎች ጉዳቱን ይቀንሳሉ። በዚህ አደጋ ማስተናገድዎን እንዲያሳዩ የየድር ሆስቲንግ እና SSL የማስረጃ ይዘት ገጾችን ከነበርበት በተለመደ መቆጣጠሪያ ይበልጡ።
ከማኑዋል መለያየት መጀመሪያ የሚያስፈልጉ የደህንነት አዘጋጅት
የማኑዋል መለያየት ጥራት ከአዘጋጅት ጋር በትክክል ይያያዛል። የተዘጋጅ አቅጣጫ ያለውን ፈተና ከድንጋጤ ሙከራ ይሻላል። አቅጣጫ፣ አካባቢ፣ መዝገብ እና የተመለሰ ዕቅድ መቀየር አስፈላጊ ነው። በውስጥ አካባቢ ላይ ፈተና ሲደርስ የስራ ውጤትና የስህተት አሳሳበ በጥንቃቄ ማያዣ ይጠበቅ አለበት። በጣም የሚያሳሰብ ዘዴ በአንድ ኮድ እና በተመሳሳይ የውሂብ ማዕከል ስም በሚሰራ የstaging ቅጂ ላይ ፈተና ማድረግ ነው።
1. አቅጣጫና ስልጣን በግልጽ ሁኔታ ያድርጉ
- የሚፈተኑ የdomain, subdomain, panel እና API ጫማዎችን ዝርዝር ያድርጉ።
- የስልጣን የሌላችሁ የሶስተኛ ወገን አገልግሎቶችን ከፈተና አቅጣጫ ውጭ ያውጡ።
- የፈተና ሰዓትን በዝቅተኛ ትራፊክ ዘመን ያድርጉ።
- የውሂብ ለውጦችን በተቻለ መጠን በፈተና ተጠቃሚ እና በፈተና ውሂብ ያስቀርቡ።
- ስህተት ሲኖር የሚመለሱበት ቅድሚያ እና የግብዣ መረጃዎችን ዝግጁ ያድርጉ።
አዲስ ፕሮጀክት ሲቀመጥ domain, DNS እና hosting የሚተላለፉበት ጊዜ የደህንነት ቁጥጥር አትዘግዉ። ከውጭ ገፅ በፊት ዶማይን መረጃ ጥያቄ እና Linux ሆስቲንግ የመስመር አካላትን ተመልከቱ፣ በተጨማሪም የደህንነት ኮድ ቁጥጥር ማድረግ አለበት።
2. የመተግበሪያውን የግቤት ካርታ ያውጡ
SQL Injection ብዙውን ጊዜ ተጠቃሚዎች ውሂብ ሲሰጡ ይነሳል። ስለዚህ መጀመሪያ የግቤት ፊት ያቅርቡ። ከሚከተሉት ቦታዎች በአንድ አንድ ያውሩ፡ URL ፓራሜተሮች፣ POST ፎርሞች፣ የፍለጋ ቦታዎች፣ የምድብ ማጣሪያዎች፣ የስርዓት ፓራሜተሮች፣ የጋሪ እና የትዕዛዝ ቦታዎች፣ የተጠቃሚ ፕሮፋይል፣ የአስተያየት ፎርሞች፣ የadmin panel ዝርዝር፣ JSON API አካል፣ HTTP ራስ እና ኩኪዎች። ለእያንዳንዱ ቦታ የተጠቃሚውን የውሂብ አይነት ይጻፉ። ለምሳሌ id ቁጥር ነውን፣ slug ጽሑፍ ነውን፣ የቀን ቦታ በየተወሰነ ፎርማት ነውን፣ ስርዓት በተፈቀደ ኮሎኖች ይመረጣልን?
3. የLog እና የቅድሚያ አብራይ ያክሉ
በፈተና ወቅት የመተግበሪያ log ፡ የweb ሰርቨር ግብዣ log እና የውሂብ ማዕከል የስህተት log ዋጋ ያላቸው ማስረጃዎች ናቸው። ነገር ግን በስራ በተጠቃሚ ውሂብ ማዕከል ዝርዝር ስህተቶችን ለተጠቃሚ ማሳየት ስህተት ነው። ትክክለኛ ስራ; ስህተቱን በአጠቃላይ መልእክት ለተጠቃሚ ማሳየት፣ ዝርዝሩን በደህንነት log ቻናል ማዘጋጀት ነው። ፈተና በፊት ዘመናዊ ቅድሚያ ይያዙ። በጠባቂ ስ፣ የፋይል ቅድሚያ፣ የውሂብ ቅድሚያ እና የመዋቅር ቅድሚያ በተለይ ይቆጠብ። በHostragons ላይ የሚጠቀሙትን መስመር በእርስዎ የእንግዳ ዳውን ጽሑፍ ጋር ቁጥጥር ያድርጉ።
SQL Injection ክፍትነቶችን በእጅ ማረጋገጥ፡ የደረጃ ተደራሽ ዝርዝር
ከታች የተቀመጡት ደረጃዎች በአደገኛ አይደለም የሚባለ ተመልከቻና ማረጋገጫ ስርዓት ይነጋገራሉ። ዓላማው ዳታ ማስተናገድ አይደለም፤ ግን ግቤቱ የquery ስርዓቱን ይበላሽ ወይም አያበላሽም እንደሚሆን ማረጋገጥ ነው። በእያንዳንዱ ፈተና በመጀመሪያ የመደበኛውን አስተላላፊ ባህሪ ይመዝግቡ፤ ከዚያም በትንሹና በተመለሰ ሙሉ የሚቀይሩ ነገሮችን በመውሰድ የሚቀየረውን ምላሽ ይተኩላችሁ።
ደረጃ 1፡ መደበኛ ምላሽን እንደ መጠን ያድርጉ
የምርት ዝርዝር ገፅ፣ የፍለጋ ፎርም ወይም የተጠቃሚ ማጣሪያ እስክሪን ይምረጡ። በመደበኛ ፓራሜትር የገፁን HTTP status code፣ የምላሽ ጊዜ፣ የመዝገብ ብዛት፣ የገፅ አናትና በእስክሪን ላይ የሚታየውን መልእክት ይመዝግቡ። ምሳሌ ምርት ገፅ 200 ይመልሳል፣ በ120 ms ውስጥ ይከፈታል፣ አንድ ምርት ብቻ ይሳያል። ይህ የእርስዎ መጠን ይሆናል። ያልተሰቆበ መጠን ያለው ፈተና የተያዘውን የምላሽ ዝግጅት ወይም ስህተት ስለአደጋ ሊቆጠር ይችላል።
ደረጃ 2፡ የምንጭ አይነት አልተለመደ እና ቀላል የመተዳደር ስህተቶችን ያረጋግጡ
በቁጥር የተጠበቀ ቦታ የጽሑፍ እና የልዩ ባህሪ ቦታ የማይታወቀ የልዩ መንፈስ፣ በቀን የተጠበቀ ቦታ የተለየ ፎርማት ከተላከ ጊዜ አፕሊኬሽኑ እንዴት ይመላለሳል? የተያዘ መተግበሪያ ግቤቱን ይከልኳል ወይም በተቆጣጠረ ስህተት ይመልሳል። የተያዘ አይደለም መተግበሪያ የdatabase ስህተት መልእክትን በእስክሪን ላይ ሊያሳይ፣ የመዝገብ ብዛትን ሊቀይር፣ የገፅ መዋቅርን ሊሰበር ይችላል። እዚህ የሚመሰረተው ቦታ የስህተት መልእክት ይዘት ነው። SQL syntax፣ የጠረጴዛ ስም፣ የአንባሳ ስም፣ የdriver ስም ወይም የquery ክፍል ከታየ ይህ የመረጃ ፍሰት ነው፣ በInjection አካል ሳይሆን ማስተካከል አስፈላጊ ነው።
ደረጃ 3፡ የምላሽ አይነት ልዩነቶችን ይተኩላችሁ
አንዳንድ ክፍትነቶች በቀጥታ ስህተት አይያዘም፤ የገፅ ምላሽ ብቻ ይቀየራል። ምሳሌ፣ በመደበኛ አስተዳደር ቦታ 3 ምርቶች ቢታዩ፣ በትንሽ የመንፈስ ልዩነት ብቻ የምርት ብዛት በድንገት ይጨምራል ወይም ይሸነፋል ከሆነ የquery አካል በተጠቃሚ ግቤት ሊተካ ይችላል። በዚህ ደረጃ ዳታ ለማስተናገድ አይደለም፤ በምላሽ ተለዋዋጭ አለ ወይም አይታወቅ ብቻ ይመዝግቡ። በደህና ተያዘ ስርዓቶች ተጠቃሚ ግቤት እንደ ፓራሜትር ይተካል፤ ልዩ ባህሪዎች የquery ስርዓትን አያቀይሩም፤ የተፈለገው ጽሑፍ አካል ብቻ ይቆጠራል።
ደረጃ 4፡ የስህተት መልእክቶችንና HTTP ኮዶችን ይመልከቱ
SQL Injection ምልክት ሁልጊዜ በእስክሪን ላይ የሚታየ የስህተት መልእክት አይደለም። አንዳንድ ጊዜ 500 ስህተት፣ ባዶ ነጭ ገፅ፣ የተለየ ቅድመ ትእዛዝ፣ የተጠቃሚ 403 ምላሽ ወይም በጊዜ የቆየ ጥያቄ ሊታየ ይችላል። በWeb አገልጋይ ሎግ ላይ በአንድ ጥያቄ ውስጥ በአፕሊኬሽን ደረጃ የተፈጠረ ስህተት ከታየ ተገናኝ የኮድ ክፍል ይመርምሩ። በተለይ database error፣ SQL syntax፣ unknown column፣ unclosed quotation፣ PDO exception፣ MySQL error፣ PostgreSQL error ወይም ORM query errors የአደጋ ምልክት ሊሆኑ ይችላሉ። በProduction ይህ ዝርዝር ለተጠቃሚ ሊታየ አይገባም።
ደረጃ 5፡ API እና AJAX አይነቶችን አትረሳው
በዘመናዊ ጣቢያዎች ብዙ queries በታየ ገፅ ላይ አይፈጠሩም፤ ከኃላፊ API endpoints ይሰራሉ። በBrowser developer tools Network tab ይክፈቱ፣ የJSON ጥያቄዎች፣ የfiltering endpoint እና የadmin panel AJAX ጥሪዎችን ይመልከቱ። በAPI በኩልም የደህንነት በማህበረሰቡ ምንጭ ይተካል፤ የውስጥ አይነት ይተካል፣ የተፈቀደ ዝርዝር ይተገበራል፣ በparameterized query ይጠቀማል፣ የስህተት ምላሽ ይቀርባል። በAPI ደህንነት ዙሪያ በሚሰጡ በጣም ወጣቶች መቆጣጠሪያዎች ለማየት API የታማኝነት ይጠቀሙ።
ደረጃ 6፡ የፍቃድ ቁጥጥርን SQL ደህንነት ጋር በአንድ ይፈትኑ
SQL Injection በquery ጽፍ ብቻ አይገደብም፤ የፍቃድ ዲዛይን አስፈላጊ ነው። ተጠቃሚው የራሱን ትዕዛዝ ብቻ ሊያይ አለበት፤ id parameter ተቀይሮ ሌላ ትዕዛዝ ሊያገኝ ከቻለ የክፍትነት ምልክት ሊሆን ይችላል፣ ነገር ግን ጭቆና የፍቃድ ክፍትነት ነው። የተያዘ መተግበሪያ በquery ውስጥ የተጠቃሚውን id ከserver session ይወስዳል፣ በclient ቀረበ id አይታመንም። ይህ ቁጥጥር በደንበኛ panel፣ በቢል፣ በድጋፍ ፍላጎትና በአባልነት ስርዓቱ ውስጥ በጥሩ ደረጃ ይተካል።
የማኑዋል ሙከራ ውጤቶችን እንዴት ማስተላለፊያ ማድረግ ይገባና?
| ምልክት | ተብለው የሚመለከት ትርጉም | የሚገባ እርምጃ |
|---|---|---|
| SQL የስህተት መልእክት በስክሪን ላይ ይታያል | የስህተት አስተዳደር ደካማ ነው፣ የinjection አደጋ ሊኖረው ይችላል | የስህተት እየተታየ ከሆነ ይዘጋ፡ እንዲሁም ለመዝገበ የተስፋፋ መረጃ በደህና ጉዞ ይላኩ፣ ጥያቄውን ይመልከቱ |
| የልዩ ቁምፊ በኋላ ውጤት ቁጥር ይለዋዋል | የተሰጠ ግብዓት በጥያቄ አስተዳደር ላይ ተጽናና ሊሆን ይችላል | በትክክል የተከፈተ ጥያቄ ይጠቀሙ፣ የውስጥ አይነት ማረጋገጫ ይጨምሩ |
| በቁጥር id የሚገባ ቦታ ሞያ ጽሑፍ ተገብቶ ከሰጠ 500 ስህተት ይሰጣል | ማረጋገጫና የስህተት አስተዳደር በቂ አይደለም | ቁጥር ማረጋገጫ፣ በተቆጣጣሪ 400 መልስና የማእከላዊ ስህተት አጠናቀቅ ይተገብሩ |
| API ዝርዝር የdatabase ስህተት መልእክት ይመልሳል | የመረጃ ፍላጎትና የጥቃት አቅጣጫ ይጨምራል | አጠቃላይ የስህተት መልእክት ይሰጡ፣ ዝርዝር ግን በserver log ይይዙ |
| በtest አካባቢ ችግር የለም፣ በቀጥታ ግን ችግር አለ | የconfig ወይም የversion ልዩነት ሊኖረው ይችላል | PHP፣ plugin፣ database mode እና የአካባቢ አስተካካይነትን ይንዛውሩ |
የተገኘ ግምት እስከ ትክክል ክፍተት እንደሆነ ለማረጋገጥ የትንሹ ሁለት ምስክርነት ይፈልጉ፣ እንደ መልስ ልዩነት እና log መዝገብ እንዲሁም። አንድ 500 ስህተት ሁልጊዜ SQL Injection ማለት አይደለም፤ የፋይል ፍቃድ፣ የማስታወሻ ግደታ ወይም የplugin ግጭት ሊሆን ይችላል። ነገር ግን ከdatabase ስህተት ጋር የተያያዘ የተጠቃሚ ግብዓት በተመሳሳይ አካባቢ ከተገኘ ቅድመ ተሳትፎ አለ።
SQL Injection ክፍተቶችን ለመዝጋት ዘዴዎች
ቋሚ መፍትሔ አንድ የደህንነት ኤክልንት በማግኘት ብቻ አይደለም። ትክክለኛ መፍትሔ በብዙ ሀረግ ነው: ደህንነት ያለው ኮድ፣ የተገደበ የዳታቤዝ መለያ፣ ጠንካራ የስህተት አስተዳደር፣ ዘመናዊ የመሠረት አዋቂ፣ እና ምደባዊ እና የተደጋጋሚ ፈተና በአንድ ላይ ይተገበራሉ።
1. የተመሰረተ ጥያቄ (Parametric Query) እና Prepared Statement ይጠቀሙ
በጣም ዋና የአካል መከላከያ የተጠቃሚ ግብዓትን ወደ SQL ጽሑፍ በቀጥታ አያጣብቁ። በPHP PDO ምሳሌ ደህንነት አተገባበር እንዲህ ይሆናል፡ `prepare` በመጠቀም የጥያቄ አብነት ይፈጠራል፣ የተጠቃሚ ውሂብ በ`execute` ደረጃ እንደ ፓራሜትር ይሰጣል። ምሳሌ፡ `$stmt = $pdo->prepare('SELECT id, title FROM posts WHERE slug = ?'); $stmt->execute([$slug]);`. በዚህ ዘዴ ዳታቤዙ ግብዓቱን እንደ ትእዛዝ አይቀበልም፣ እንደ ውሂብ ይቀበላል።
ORM ከሆነ ብቻ አይበልጥ። Laravel, Symfony, Django ወይም ተመሳሳይ አዋቂዎች የመደበኛ የquery builder ብዙ ጊዜ ደህንነት ያላቸው ናቸው፤ ነገር ግን raw query ሲጻፍ አደጋው ይመለሳል። raw SQL ባስፈለገ ጊዜ ፓራሜትር በመጠቀም ይጠቀሙ፤ የstring ስብስብ አይሁን።
2. የግብዓት ምረጥና ፈቀቅ ዝርዝር ይፈጠሩ
ፓራሜትር ከተጠቀሙ ዋናው መከላከያ ነው፤ ነገር ግን validation ደግሞ ጠንካራ አረጋዊ ሀረግ ነው። id ቦታ አንስተኛ አያት ነገር ይሁን፣ ቀን በISO format ይገባ፣ email ቦታ በኢሜይል format ይሁን፣ የስርየት ፓራሜትር ደግሞ በፈቀቅ የተወሰኑ ኮሎኖች ብቻ ይመረጥ። በ order by ቦታዎች የኮሎን ስም ወይም አቅጣጫ ሲወስን፣ ፓራሜትር መጠቀም በጣም በቀላሉ አይደለም። በዚህ ቦታ ፈቀቅ ዝርዝር ይጠቀሙ፤ ለምሳሌ ስርየት ሰሌዳው price, created_at እና title ብቻ ይሁን፣ አቅጣጫው asc ወይም desc ብቻ ይደርስ።
3. የዳታቤዝ ተጠቃሚውን ፍቃድ ይገድቡ
የድር መተግበሪያው የዳታቤዝ ተጠቃሚው ሁሉንም ማድረግ የሚችል አስተዳዳሪ አይደለም። ብዙ ሳይቶች የመተግበሪያውን መለያ SELECT, INSERT, UPDATE, DELETE ብቻ ይሰጣሉ፤ DROP, ALTER, CREATE ድርጅቶች በproduction ይዘጋሉ። ለሪፖርት የተለየ የተነቃ ተጠቃሚ፣ ለጥገና የተለየ አስተዳዳሪ መለያ ይጠቀሙ። እንዲሁ አደጋ ቢኖረው ደምበኛው ይገድባል።
4. የስህተት አስተዳደርን ደህንነት ያድርጉ
በproduction ዘርፍ ዝርዝር የስህተት አሳየትን ዘጉ። ለተጠቃሚ አጠቃላይ መልእክት ይስጡ፡ እንደ “እባክዎ አሁን የስህተት ተከስቷል።” ዝርዝር እንደ exception, query መረጃ, file path እና stack trace በተቀረጹ log ብቻ ይኖራል። Log በተደጋጋሚ ይቀያየሩ፣ የተለያዩ ውሂቦች ይሰናዳው፣ እና ለማንኛውም ሰው ይዘጋል።
5. WAF፣ ዘመናዊ version እና Hosting ሀረግ ይጠቀሙ
Web Application Firewall በክፉ የተዘጋጅበት አብነት ለማግኘት ተጨማሪ ሀረግ ያቀርባል፤ ነገር ግን የተሰበሰበ ኮድ እንደመተግበሪያ የማይበዛውን አይተካም። PHP, Node.js, Python ፓኬጆች፣ CMS ኮር፣ ቤተሰቦች እና ኤክልንቶች ዘመናዊ ይደረጉ። አሮጌ version የታወቀ SQL Injection ክፍተትና የስህተት አስተዳደር ችግሮች ሊኖሩት ይችላሉ። WordPress ተጠቃሚዎች ለወርድፕሬስ ደህንነት መግለጫ በplugin ምረጥና እንደደጋጋሚ ማደስ የሚያገኙ ጨምሮ መሆን ይችላል።
በHosting በአንድ ላይ የተለየ መለያ አቋም፣ ዘመናዊ የዳታቤዝ version፣ የተደጋጋሚ ቅድሚያ፣ ደህንነት ያለው የፋይል ፍቃድና SSL አጠቃቀም ጠቃሚ ነው። SSL የSQL Injectionን አይዘግበም፤ ነገር ግን የተጠቃሚ ውሂብ በአውታረ መረብ ላይ ያጠባቀማል። በተለይ ግብዓት፣ ክፍያና የደንበኛ ፓነል ያላቸው ሳይቶች ላይ SSL የማስረጃ ይዘት አጠቃቀም ያስፈልጋል።
6. ደህንነት ያለው ኮድ አሳታትና እንደገና ፈተና ያድርጉ
ከማስተካከያ በኋላ በቀድሞው ደረጃ የነበሩትን ማኑአል ፈተናዎች እንደገና ያድርጉ። የሚጠበቀው ውጤት ይህ ነው፡ ልዩ ቅርጸቶች የquery አተገባበሩን አያስተካክሉ፣ ስህተቶች ተጠቃሚን ዝርዝር አያቅርቡ፣ በlog ውስጥ የተቆጣጠሩ exception ሳይቀር የዳታቤዝ ስህተት አይታይ፣ ፍቃድ ቁጥጥር አይቀረጥ። በኮድ አሳታት string ስብስብ በመጠቀም የSQL የሚፈጠሩትን ቦታዎች ይፈልጉ። በትልቅ ፕሮጀክቶች ቀላል ፍለጋ SELECT, WHERE, ORDER BY, raw, query, exec ያሉበት ፋይል ይፈትኑ።
የWebmaster ለማድረግ ቀላል የጥላቻ ሥርዓት

SQL Injection ጥላቻ ማረጋገጫ አንድ ጊዜ ብቻ ለሚከናወን ነው የሚባለው አይደለም፣ እየተደጋገመ ማስተናገድ ያስፈልጋል። በወር አንድ ጊዜ CMS እና እቃ ማሻሻያዎችን ያረጋግጡ። በሶስት ወር ውስጥ አስፈላጊ ፎርሞችን እና API አድራሻዎችን በእጅ ያድርጉ። ትልቅ የኮድ ለውጦች ከተደረጉ በኋላ የዋቢ ትንተናዎችን ዳግም ያትኩ። ለአዲስ ባህሪ ስታገኙ እነዚህ 5 ጥያቄዎችን ያቅርቡ፡ ይህ ቦታ የተጠቃሚ ውህድ ይቀበላል? የውህድ አይነት ይፈታል? ሐረግ በፓራሜተር ይሰጣል? ስህተት ከተጠቃሚ ጋር ዝርዝር መረጃ ይሰጣል? እንደ ስራው ለዋቢ ተጠቃሚ ፍቃድ እንደገና ያስፈልጋል?
በተጨማሪም፣ ቅድመ ማረፊያዎች መተከል የሚችሉ መሆናቸውን ይፈትኑ። ብዙ ድር ጣቢያዎች ቅድመ ማረፊያ እየወሰዱ አስባሉ፣ ነገር ግን መመለስ አይሞክሩም፤ በአደጋ ጊዜ ችግር ያጋጠማቸዋል። የHostragons አስማማ ማስተናገድ፣ ጠንካራ ቅድመ ማረፊያና የኮድ ማሳያ ተአምራት በአንድ ስርዓት ሲሰሩ SQL Injection አደጋ ከፍተኛ ተቆጣጠር ይደረጋል።
ብዙውን ጊዜ የሚደረጉ ስህተቶች
- የእሴት በአንድ በአንድ በአንድ በአንድ የJavaScript ማረጋገጫ ብቻ መተማመን። የጥፋት ተጠቃሚ አስተዳደሩን ማጠቃለያ የማይጠቀም ሊሆን ይችላል፤ የአገልጋይ በአንድ በአንድ በአንድ በአንድ ማረጋገጫ አስፈላጊ ነው።
- የተነጠረ አንድ ምልክት መሰረዝ በቂ መሆኑን መስበን። ዘመናዊ መከላከያ ቁስቁስ ማሰረዝ ሳይሆን በአንድ በአንድ ምንጭ ጥያቄ ማድረግ ነው።
- Admin panel ን ደህንነቱ አስተዋውቅ። የአስተዳደር ፓነሎችም የተጠቃሚ ግብዓቶችን ይቀበላሉ፤ ማረጋገጫ ያስፈልጋል።
- ORM ን በመጠቀም ሁሉንም ጥያቄ ራስ ሰር ደህንነት አለው በማስበን። Raw query ና የዲናሚክ ማደራደሪያ መስኮች ምንጭ ሊሆኑ ይችላሉ።
- የውሂብ ቋት መለያ ን ከሚያስፈልገው በላይ ፍቃድ መስጠት። የአነስተኛ መብት መስርያ መስፈርት ማስከተል አስፈላጊ ነው።
- በቀጥታ አካባቢ ዝርዝር የስህተት ማሳያ ክፍት ትችት። ይህ ለጥፋት ተጠቃሚ መንገድ መነገር ይችላል።
ማጠቃለያ ሰንጠረዥ፡ ሙከራና መዝገብ ቅድሚያዎች
| ቅድሚያ | ሊደረግ የሚገባ ስራ | የሚጠበቀው ውጤት |
|---|---|---|
| ከፍተኛ | ወደ ፓራሜትር ተመሳሳይ ጥያቄ መቀየር | የተጠቃሚ አስገባ እንደ SQL ትእዛዝ አይሰራም |
| ከፍተኛ | በ Hostragons ፕሮዳክሽን ውስጥ የስህተት ዝርዝሮችን መዝጊያ | የታቦል፣ የኮሎንና የጥያቄ መረጃ አይፈጸምም |
| ከፍተኛ | የውስጥ የዳታበዝ ፍቃድን መጥለያ | የደህንነት ክፍተት ተጽናና ይቆራረጥ |
| መካከለኛ | WAF እና የደህንነት መመሪያዎች | የታወቀ የጦርነት ጥያቄዎች ይታገዳሉ |
| መካከለኛ | በየጊዜው በእጅ እንደገና ሙከራ | አዲስ የኮድ ለውጦች ቀደም ሲል ይታወቃሉ |
| መካከለኛ | ቅድሚያ ቅጂ እና እንደገና መመለስ ሙከራ | ከክስተት በኋላ በፍጥነት መድረስ ይቻላል |
ብዙ ጊዜ የሚጠየቁ ጥያቄዎች
SQL Injection ክፍትነትን በእጅ መፈተሽ ህጋዊ ነው?
በእርስዎ የሚያስተዳድሩ ሲስተሞች ወይም የተፈቀደልዎ ፕሮጀክቶች ላይ ብቻ ህጋዊ ነው። በሌሎች የማይታወቁ ድር ጣቢያዎች ያለፈቃድ መሞከር ህጋዊም አይደለም፣ እና ደንብ የለውም። የፈተና ውስብስብ, ሰዓት ክልልና የሚጠቀሙት ዘዴ በቅድሚያ ግልጽ ማድረግ ያስፈልጋል።
WAF ብቻ መጠቀም SQL Injection አደጋን ሙሉ በሙሉ ያቆማል?
አይደለም። WAF ተጨማሪ የጥበቃ ማቅረብ ነው፣ ነገር ግን በትክክል የማይቀረበው የSQL ጥያቄ ስህተት ማስተካከል አይችልም። ትክክለኛ መፍትሄ የparameterized ጥያቄ, የግብዓት ማረጋገጫ, የተጠቃሚ ስውነት የጥበቃ አስተዳደርና የአነስ መብት መሥራት ነው።
WordPress ሳይቶች ላይ SQL Injection በየት አብዛኛው ይገኛል?
አብዛኛው በዘመናዊ ያልሆኑ አክሊኖች፣ ታመነ የማይባሉ ትሞች፣ በራስ የተጻፉ አጭር ኮድዎች፣ AJAX endpointና በስህተት የተደረጉ ፎርም አድማዎች ይነሳል። የcore፣ themeና አክሊኖች እስከ ሁሉም ጊዜ አዲስ እንዲደረጉ ይጠበቅ፤ የማይጠቀሙት አክሊኖች ይሰወድ።
SQL Injection እና የመዳረሻ ቁጥያ ክፍትነት አንድ ናቸው?
አይደለም። SQL Injection የጥያቄ አስተዳደሩ በተጠቃሚ ግባት ሊቀየር ይችላል። የመዳረሻ ቁጥያ ክፍትነት ደግሞ ተጠቃሚው ያልተፈቀደለት ውህደት ማዳረስ ነው። ነገር ግን ሁለቱ በአንድ ገጽ በአንድ ላይ ሊኖሩ ይችላሉ እና በአንድ ላይ መፈተሻቸው ይገባዋል።
ክፍትነቱን ዘግቼ መረጋገጥ እንዴት እችላለሁ?
ከማስተካከል በኋላ በአንድ ግባት እንደገና መፈተሽ ያስፈልጋል። ውጤቱ መቀየር አይችል፣ ዝርዝር የdatabase ስህተት አይታይ፣ በlog ውስጥ የተቆጣጠረ የSQL ስህተት አይኖር እና የመብት ቁጥያ ትክክለኛ እንዲሰራ ይጠበቅ። በጠናከር ሲስተሞች ላይ ውጤታማ የኮድ ትንተና ወይም የጥበቃ ፈተና ይረጋገጥ።
መዝጊያ
SQL Injection የአደጋ ክፍትነትን በእጅ መለየት ሂደት ለwebmaster ስለመሆኑ በቴክኒክ የተለየ አስተዋጽዖ ሳይሆን የማደጋገጫ የወጣ ኃላፊነት ነው። በደህንነት የተገናኘ ምርመራ አቅጣጫ በመድረስ አደጋ ሊያደርስ የሚችሉ ግብዓቶችን ማስረዳት ይቻላል፤ በፓራሜትር የተያያዘ ማቅረብና በትክክል አይነት የተሰጠ ፍቃድ በመድረስ በቋሚ መፍትሄ ማድረግ ይችላሉ። በHostragons መድረክ ላይ ሲትዎን ሲያስተናግዱ የዘመናዊ hosting, SSL, backup እና የደህንነት ደረጃዎችን በአንድ እድሜ መከታተል የረጅም ጊዜ ትጋላ እንዲጨምር ያደርጋል። ከሚፈልጉ ከሆነ የአሁኑ ስፔስ ማስተናገድና የደህንነት እንዲሁም hosting ያሉበትን ያስፈልጋሉ የሚሉ ይሁን በሽያጭ ውጥን ሳይሆን Hostragons çözümlerine በትክክል ማረጋገጥ ይችላሉ።