Secure coding
સુરક્ષિત કોડિંગ એ કમ્પ્યુટર સોફ્ટવેરને એવી રીતે વિકસાવવાની પ્રથા છે કે જે સુરક્ષા નબળાઈઓના આકસ્મિક પરિચય સામે રક્ષણ આપે છે. ખામીઓ, ભૂલો અને તર્કની ભૂલો સતત સામાન્ય રીતે ઉપયોગમાં લેવાતી સોફ્ટવેર નબળાઈઓનું પ્રાથમિક કારણ છે. હજારો નોંધાયેલી નબળાઈઓના વિશ્લેષણ દ્વારા, સુરક્ષા વ્યાવસાયિકોએ શોધ્યું છે કે મોટાભાગની નબળાઈઓ પ્રમાણમાં ઓછી સંખ્યામાં સામાન્ય સોફ્ટવેર પ્રોગ્રામિંગ ભૂલોમાંથી ઉદ્ભવે છે. આ ભૂલો તરફ દોરી જતી અસુરક્ષિત કોડિંગ પ્રથાઓને ઓળખીને અને વિકાસકર્તાઓને સુરક્ષિત વિકલ્પો પર શિક્ષિત કરીને, સંસ્થાઓ જમાવટ પહેલાં સોફ્ટવેરમાં નબળાઈઓને નોંધપાત્ર રીતે ઘટાડવામાં અથવા દૂર કરવામાં મદદ કરવા માટે સક્રિય પગલાં લઈ શકે છે. કેટલાક વિદ્વાનોએ સૂચવ્યું છે કે સાયબર સુરક્ષા સંબંધિત જોખમોનો અસરકારક રીતે સામનો કરવા માટે, પ્રણાલીઓમાં યોગ્ય સુરક્ષાને કોડેડ અથવા "બેક ઇન" કરવી જોઈએ. સોફ્ટવેરમાં સુરક્ષાની રચના સાથે, આ સુનિશ્ચિત કરે છે કે આંતરિક હુમલાઓ સામે રક્ષણ હશે અને એપ્લિકેશન સુરક્ષા માટે જોખમ ઘટાડે છે. બફર-ઓવરફ્લો નિવારણ બફર ઓવરફ્લો, એક સામાન્ય સોફ્ટવેર સુરક્ષા નબળાઈ, ત્યારે થાય છે જ્યારે કોઈ પ્રક્રિયા નિશ્ચિત-લંબાઈના બફરની બહાર ડેટા સંગ્રહિત કરવાનો પ્રયાસ કરે છે. ઉદાહરણ તરીકે, જો વસ્તુઓને સંગ્રહિત કરવા માટે 8 સ્લોટ હોય, તો જો 9 વસ્તુઓને સંગ્રહિત કરવાનો પ્રયાસ કરવામાં આવે તો સમસ્યા થશે. કમ્પ્યુટર મેમરીમાં ઓવરફ્લો ડેટા આગામી સ્થાનમાં ડેટાને ઓવરરાઇટ કરી શકે છે જે સુરક્ષા નબળાઈ (સ્ટેક સ્મેશિંગ) અથવા પ્રોગ્રામ સમાપ્તિ (વિભાજન ખામી) માં પરિણમી શકે છે. બફર ઓવરફ્લો માટે પ્રવણ C પ્રોગ્રામનું ઉદાહરણ isint vulnerble _ function (ચાર * લાર્જ _ યુઝર _ ઇનપુટ) {ચાર dst [સ્મોલ]; સ્ટ્રસીપી (dst, લાર્જ _ યુઝર _ ઇનપુટ);} જો વપરાશકર્તા ઇનપુટ ગંતવ્ય બફર કરતા મોટું હોય, તો બફર ઓવરફ્લો થશે. આ અસુરક્ષિત પ્રોગ્રામને ઠીક કરવા માટે, સંભવિત બફર overflow.int સુરક્ષિત _ કાર્ય (ચાર * વપરાશકર્તા _ ઇનપુટ) ને રોકવા માટે સ્ટ્રેનસીપીનો ઉપયોગ કરો {ચાર dst [BUF _ SIZE];// મહત્તમ BUF _ SIZE બાઇટ્સ સ્ટ્રેનસીપીની નકલ કરો (dst, વપરાશકર્તા _ ઇનપુટ, BUF _ SIZE);} અન્ય સુરક્ષિત વિકલ્પ એ છે કે malloc.char * સુરક્ષિત _ નકલ (ચાર * src) {સાઈઝ _ t લેન = સ્ટ્રલેન (src); ચાર * dst = (ચાર *) મેલોક (લેન + 1); જો (dst! = null) ફોર્મેટ-સ્ટ્રિંગ એટેક નિવારણ ફોર્મેટ સ્ટ્રિંગ એટેક ત્યારે થાય છે જ્યારે દુર્ભાવનાપૂર્ણ વપરાશકર્તા ચોક્કસ ઇનપુટ્સ પૂરા પાડે છે જે આખરે પ્રિન્ટએફ () જેવા ફોર્મેટિંગ કરે છે તે કાર્ય માટે દલીલ તરીકે દાખલ કરવામાં આવશે. આ હુમલામાં વિરોધી દ્વારા વાંચન અથવા સ્ટૅક પર લખવાનો સમાવેશ થાય છે. C પ્રિન્ટએફ કાર્ય આઉટપુટને stdout પર લખે છે. જો પ્રિન્ટએફ કાર્યનું પરિમાણ યોગ્ય રીતે ફોર્મેટ કરેલું નથી, તો કેટલીક સુરક્ષા ભૂલો રજૂ કરી શકાય છે. નીચે એક પ્રોગ્રામ છે જે ફોર્મેટ સ્ટ્રિંગ attack.int વલ્નરેબલ _ પ્રિન્ટ (ચાર * માલિસિયસ _ ઇનપુટ) {પ્રિન્ટએફ (માલિસિયસ _ ઇનપુટ);} માટે સંવેદનશીલ છે, પ્રોગ્રામને પસાર કરવામાં આવેલી દૂષિત દલીલ "% s% s% s% s% s% s% s% s" હોઈ શકે છે, જે અયોગ્ય મેમરી રીડ્સમાંથી પ્રોગ્રામને ક્રેશ કરી શકે છે. પૂર્ણાંક-ઓવરફ્લો નિવારણ પૂર્ણાંક ઓવરફ્લો ત્યારે થાય છે જ્યારે અંકગણિત કામગીરી ઉપલબ્ધ જગ્યામાં રજૂ કરવા માટે ખૂબ મોટી પૂર્ણાંકમાં પરિણમે છે. એક પ્રોગ્રામ જે પૂર્ણાંક ઓવરફ્લો માટે યોગ્ય રીતે તપાસ કરતું નથી તે સંભવિત સોફ્ટવેર ભૂલો અને શોષણનો પરિચય આપે છે. નીચે C + + માં એક કાર્ય છે જે પુષ્ટિ કરવાનો પ્રયાસ કરે છે કે x અને y નો સરવાળો વ્યાખ્યાયિત મૂલ્ય કરતાં ઓછો અથવા સમાન છે MAX: bool sumIsValid _ floed (અહસ્તાક્ષરિત પૂર્ણાંક x, અહસ્તાક્ષરિત પૂર્ણાંક y) {અહસ્તાક્ષરિત પૂર્ણાંક = x + y; વળતરની રકમ <= MAX;} કોડ સાથેની સમસ્યા એ છે કે તે ઉમેરા કામગીરી પર પૂર્ણાંક ઓવરફ્લોની તપાસ કરતું નથી. જો x અને y નો સરવાળો સહી વગરના પૂર્ણાંકના મહત્તમ સંભવિત મૂલ્ય કરતાં વધારે હોય, તો એડિશન ઓપરેશન ઓવરફ્લો થશે અને કદાચ MAX કરતા ઓછું અથવા બરાબર મૂલ્યમાં પરિણમશે, ભલે x અને y નો સરવાળો MAX કરતા વધારે હોય. નીચે એક કાર્ય છે જે સરવાળો x અને y બંને કરતા મોટો અથવા સમાન છે તેની પુષ્ટિ કરીને ઓવરફ્લો માટે તપાસે છે. જો સરવાળો ઓવરફ્લો થયો હોય, તો સરવાળો x કરતા ઓછો અથવા y કરતા ઓછો હશે. bool sumIsValid _ સુરક્ષિત (સહી વગરનો int x, સહી વગરનો int y) {સહી વગરનો int sum = x + y; વળતર સરવાળો> = x & & sum> = y & & & sum <= MAX;} પાથ ટ્રાવર્સલ નિવારણ પાથ ટ્રાવર્સલ એ એક નબળાઈ છે જેના દ્વારા અવિશ્વસનીય સ્રોતમાંથી પૂરા પાડવામાં આવેલ પાથનું અર્થઘટન એવી રીતે કરવામાં આવે છે કે અનધિકૃત ફાઇલ ઍક્સેસ શક્ય છે. ઉદાહરણ તરીકે, એક સ્ક્રિપ્ટનો વિચાર કરો જે ફાઇલનું નામ લઈને લેખ મેળવે છે, જે પછી સ્ક્રિપ્ટ દ્વારા વાંચવામાં આવે છે અને તેનું વિશ્લેષણ કરવામાં આવે છે. આવી સ્ક્રિપ્ટ કૂતરાના ખોરાક વિશેના લેખને પુનઃપ્રાપ્ત કરવા માટે નીચેના કાલ્પનિક યુ. આર. એલ. નો ઉપયોગ કરી શકે છેઃ https://www.example.net/cgi-bin/article.sh?name=dogfood.html જો સ્ક્રિપ્ટમાં કોઈ ઇનપુટ ચેકિંગ ન હોય, તો ફાઇલનું નામ હંમેશા માન્ય છે તેના પર વિશ્વાસ કરવાને બદલે, દૂષિત વપરાશકર્તા વેબ સર્વરમાંથી રૂપરેખાંકન ફાઇલોને પુનઃપ્રાપ્ત કરવા માટે યુ. આર. એલ. બનાવી શકે છેઃ https://www.example.net/cgi-bin/article.sh?name=./././././etc/passwd સ્ક્રિપ્ટ પર આધાર રાખીને, આ/વગેરે/પાસડબલ્યુડી ફાઇલને છતી કરી શકે છે, જે યુનિક્સ જેવી સિસ્ટમો પર (અન્ય લોકો વચ્ચે) વપરાશકર્તા આઈડી, તેમના લૉગિન નામો, હોમ ડિરેક્ટરી પાથ અને શેલ્સ ધરાવે છે. (સમાન હુમલા માટે એસક્યુએલ ઈન્જેક્શન જુઓ.) આ પણ જુઓ એપ્લિકેશન સુરક્ષા સંરક્ષણાત્મક પ્રોગ્રામિંગ સુરક્ષા ભૂલ મૂળભૂત રીતે સુરક્ષિત નોંધો સંદર્ભો કમ્પ્યુટર સુરક્ષા