Secure coding: Difference between revisions

Content deleted Content added
m Reverted 1 edit by 121.210.140.68 (talk) to last revision by Rsrikanth05 (TW)
Line 8:
'''Secure coding''' is the practice of developing computer [[software]] in a way that guards against the accidental introduction of security vulnerabilities. Defects, bugs and logic flaws are consistently the primary cause of commonly exploited software vulnerabilities.<ref name="bss2001">{{Cite book| last = Viega | first = John |author2=Gary McGraw | title = Building Secure Software: How to Avoid Security Problems the Right Way | year = 2001 | publisher = MAddison-Wesley Professional | pages = 528 | isbn = 978-0201721522 | page = }}</ref> Through the analysis of thousands of reported vulnerabilities, security professionals have discovered that most vulnerabilities stem from a relatively small number of common software programming errors. By identifying the insecure coding practices that lead to these errors and educating developers on secure alternatives, organizations can take proactive steps to help significantly reduce or eliminate vulnerabilities in software before deployment.
 
== BufferAra Bellek-overflowtaşması preventionönlemi ==
[[Ara Bellek Taşması]],İşlemci belirlenen ara bellek uzunluğunu aştığında ortaya çıkan genel yazılım güvenlik açığıdır. Örneğin veri ögelerini saklamak için 8 bölüt varsa,9 veri ögesi saklanmak istenildiğinde problem ortaya çıkar.Bilgisayar belleği taşan veri sorunuyla karşılaştığında verinin bir sonraki yerine üstüne yazma işlemi gerçekleştirir,bu da güvenlik zafiyetine(yığın aşılması) veya programın bitirilmesine(bölümlendirme hatası) sebebiyet verebilir.<ref name="bss2001"/>
[[Buffer overflow]]s, a common software security vulnerability, happen when a process tries to store data beyond a fixed-length buffer. For example, if there are 8 slots to store items in, there will be a problem if there is an attempt to store 9 items. In computer memory the overflowed data may overwrite data in the next ___location which can result in a security vulnerability (stack smashing) or program termination (segmentation fault).<ref name="bss2001"/>
 
An ara examplebellek oftaşmasına aeğilimi olan bir C [[C (programmingprogramlama languagedili)|C]] program prone to aprogramı bufferaşağıda overflowverilmiştir. is<syntaxhighlight lang="c++">
int vulnerable_function(char * large_user_input) {
char dst[SMALL];
strcpy(dst, large_user_input);
}
</syntaxhighlight>IfEğer thekullanıcı userhedef inputbellekten isdaha largerbüyük thanbir thegirdi destination bufferverirse,ara a bufferbellek overflowtaşması willmeydana occurgelebilir.
 
ToBu fixtehlikeli thisprogramı unsafedüzeltmek programiçin, use strncpy tometodu olası preventara abellek possibletaşması bufferproblemini overflowönleyebilir.<syntaxhighlight lang="c++">
int secure_function(char * user_input) {
char dst[BUF_SIZE];
Line 24:
strncpy(dst, user_input,BUF_SIZE);
}
</syntaxhighlight>AnotherDiğer securegüvenli alternativeseçenek isise tohafızayı dynamicallydinamik allocateolarak memoryyığın on the heap usingyapısıyla ayırmaktır.[[malloc]].<syntaxhighlight lang="c++">
char * secure_copy(char * src) {
int len = strlen(src);
Line 35:
return dst;
}
</syntaxhighlight>InYukarıdaki thekod above code snippetparçasında, the program attempts to copy the contents of '''''src''''' into '''''dst,''''' whileiçeriklerini alsokopyalar,bunu checkingyaparken the return value ofde malloc'tan to ensure that enoughgelen memorydönüş wastipini ablekontrol toeder beki allocatedhedef forbelleğin theyeterli destinationhafızası bufferolsun.
 
== Format-string attack prevention ==