Veri tabanı güvenlik riskleri, şifreleme algoritmaları ve enjeksiyon modelleri
Database security risks, encryption algorithm and injection models
Yazar: ERTÜRK ERDAĞI
Danışman: DOÇ. DR. ENVER ÖZDEMİR
İstanbul Teknik Üniversitesi / Bilişim Enstitüsü / Bilişim Uygulamaları Ana Bilim Dalı / Bilgi Güvenliği Mühendisliği ve Kriptografi Bilim Dalı
Derece: Yüksek Lisans, 2017
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Nesnesel veri tabanı = Object oriented database ; Trafik ağı = Traffic network ; Çoklu veri tabanı sistemleri = Multi database systems ; İlişkisel veri tabanı = Relational database

Özet:
Belirli biçimlere uygun olarak düzenlenmiş verilerin saklanmasını sağlayan satır bazlı yapılara veritabanı denir. Veritabanında bulunan bilgiler, belirli bir düzende bulunan, belirli biçimde saklanmış verileri içerdirğinden kapsam alanı belirlidir. Bu noktada veritabanı kapsamı kullanım amacına göre belli bir konuda, birbiriyle ilişkili bilgilere dayalı kayıtların bir araya geldiği ve bir araya gelen bu verilerin dijital ortamda saklanan yapılar olarak da değerlendirilebilir. Bir öğrencinin eğitim hayatı süresince kendine ait eğitim bilgilerini ve sonuçlarını görüntüleme ve güncelleme ihtiyacı; bir marketteki ürünlerin stok durumunun, fiyat, satış ve elde edilen kazanç miktarı gibi parametrelerinin izlenmesi ve güncellenmesi; bir şirketin ürünlerini dünyanın her noktasından takip edebilmesiyle veritabanı kavramı ve bu veritabanlarındaki bilginin düzenli bir şekilde izlenme ve denetlenme ihtiyacı doğmuştur. Veritabanı üzerinde işlemler, yalnızca yetki verilen kullanıcıların sahip olduğu bir durumdur. Bu işlem okuma, yazma, silme ve güncelleme olarak sınıflandırılmaktadır. Veritabanındaki bu dört işlemin yapılmasını sağlayan ve kullanıcıya tasarımsal anlamda birçok kolaylık sağlayan sistemlere veritabanı yönetim sistemleri ismi verilmektedir. Kullanılacak veritabanı yönetim sistemindeki erişim denetimi, güvenik izleme prosedürleri ihtiyaç ve bilgi kaynağına göre farklılıklar göstermektedir. Veritabanı içerisindeki bilgiler, kurum ve bireyler için hassas nitelikte değerlendirilebilecek bilgileri sakladığından veritabanı ve bu veritabanının yönetimini sağlayan veritabanı yönetim sistemleri büyük önem taşımaktadır. Güvenlik faktörü yalnızca teknolojik etkenler çerçevesinde değil, bu veritabanına yetkisi çerçevesinde ulaşan veya uygulamyı aktif olarak kullanan kullanıcı sebebiyle insan etkenine de bağlıdır. 
Veritabanı yönetim sistemlerindeki en önemli olgu veritabanında var olan bilginin yetkisiz kişi veya kişilerce silinme, değiştirilme, güncelleme ve bilgi ekleme işlemlerine karşı alınacak önlemlerdir. 
Veritabanı yönetim sistemleri uygulamanın kullanacağı veritabanını sıfırdan başlayarak kullanıma hazır hale getirinceye dek geçecek süreci, kullanım esnasında oluşabilecek güvenlik risklerine karşın denetleme işlemlerini yerine getirmektedir. Veritabanı yönetim sistemleri kullanım şekli ve kullanım ölçeğine göre farklılık göstermektedir. Yalnızca birkaç kullanıcının bulunduğu bir veritabanının yönetimi ile büyük ölçekli ve fazla sayıda kullanıcı içeren bir veritabanının yönetimi farklı olmaktadır. 
Veritabanı Yönetim Sistemleri veritabanı içerisindeki veriyi sağlıklı bir şekilde sağlamak üzere birçok türde araç sağlamaktadır. Bu araçlar başlangıç seviyesindeki kullanıcıdan, bu anlamda çalışan profosonel kişi ve kurumlarca kullanılabilecek çeşitlilik ve kapsamda yer almaktadır. Veritabanları yapısına göre Hiyerarşik Model, Ağ Modeli, İlişkisel Model ve Nesne Yönelimli Model olmak üzere dört farklı modele ayrılmaktadır.
Veritabanı Yönetim Sistemleri üzerindeki zafiyetlerin kullanılarak ya da veritabanını kullanan kişi ya da kişilerce yapılacak hatalı kullanım ya da kötü niyetli işlemler neticesinde bazı tehditler oluşabilir. Oluşan bu tehditlerin ölçeği küçük dahi olsa güvenlik noktasında büyük bir risk oluşturmaktadır. Veritabanı güvenliğini en fazla etkileyen etmenlerden biri insan faktörüdür. Bu noktada kişi ya da kişilerin bilerek ya da bilmeyerek yapmış olduğu işlemlerden ötürü veritabanı güvenliğinde ihlal olurken, aynı zamanda kritik bilgilerin kullanımına bağlı olarak başka zafiyetler ortaya çıkmaktadır. İnsan faktörünün etkili olmasında bilinç eksikliği ya da veritabanı güvenlik politikalarına uyulmaması, veritabanının bulunduğu makinaların fiziki güvenliğinin sağlanmaması, kullanıcının yeterli bilgi düzeyinin olmaması, yetki kuralına dikkat edilmemesi, veritabanındaki iş ve işlemlerin kayıt altına alındığı sistemlerin eksik olması, yedekleme ve bakım işlemlerinin yeterince yapılmaması etkilidir. 
İnternet ortamında çevrimiçi çalışan bir uygulamanın veritabanı kullanımı için SQL kullanılmaktadır. Çevrimiçi bir uygulamanın hazırlanmasını sağlayan ASP.NET, PhP gibi internet tabanlı uygulama dilleri veritabanı yapısı üzerinde sorgulama ve ekleme işlemleri için SQL yapısal programlama dilini kullanmaktadır.
Kullanıcıların çevrimiçi bir uygulamada internet tarayıcısı üzerinden yaptıkları talepler veritabanı üzerinde veri girişi ya da veri sorgulamasını sağlamaktadır. Bu veri giriş ve sorgulama işlemleri bazı riskleri de taşımaktadır. Sorgulama sırasında kullanılan parametreler üzerinde yapılacak manipülasyonlar zafiyete neden olmaktadır. Bu zafiyet durumu veritabanındaki erişim yetkisi olmayan kişilerin bilgilere erişmesini sağlarken, aynı zamanda bu verilerin üzerinde değişiklik yapılmasını da sağlamaktadır. Oluşan bu duruma enejksiyon adı verilmektedir. Enjeksyon saldırısına karşı alınabilecek en temel önlem parametre değerlerini bazı özel karakterlere karşı bir fonksiyon ile kontrol edilmesidir. Veritabanı kullanan uygulama ve internet sitelerinin enjeksiyona korunaklı hale getirilmesi için , veritabanını kullanan uygulamanın mevcut durumunun analiz edilmesi, tüm açıkların tespit edilmesi yapılacak ilk adım olacaktır. İkinci adımda uygulamaya ait kodlar üzerinde standart bir yapı uygulanmalı ve veritabanına ait her işlem için güvenlik denetiminin uygulanması gerekmektedir. Üçüncü adımda ise veritabanı güvenliğini zaafiyete uğratabilecek noktaların tespit edilmesi ve ek güvenlik önlemlerinin alınması gerekmektedir.

Abstract:
A database stores data organized in accordance with certain formats. The information contained in the database is organized and includes data generated for a specific purpose. At this point, the database scope can be regarded as a collection of related information-based records in a particular context, according to the purpose of use, and the structures that are contained in the digital environment. The need for a student to view and update his / her educational information and results during his / her education life; tracking and updating parameters such as stock status, price, sales and profits of products in a market; the ability to track a company's products from every corner of the world has created the need for a database concept and the regular monitoring and monitoring of information in these databases. As long as the database is authoritative, some users are authorized to perform transactions. This process is classified as read, write, delete and update. Database management systems are named for the systems that provide these four operations in the database and provide many convenience to the user in a design sense. Access control in the database depends on the security area of the database.. Since the information in the database stores  is sensitive for institutions and individuals, database management systems that manage this database are of great importance. The security factor is not only based on technological factors, but also depends on the human factor because of the users who acces this database within the framework of authority or actively use the application.
The most important fact in database management systems is the measures to be taken against deletion, modification, update and addition of information in the database by unauthorized person or persons.
The database management systems will be able to use the application from scratch to ready to use, providing the ability to inspect against security risks that may occur during use. Database management systems differ in terms of usage. The management of a database with only a few users and the management of a database with a large numbers of users is different.
Database Management Systems provide many kinds of tools to input the data in the database in a healthy way. These tools are available in a variety of forms. There are four different types of databases according to their structure: Hierarchical Model, Network Model, Relational Model and Object Oriented Model.
Some threats may arise from the use of weaknesses in Database Management Systems or due to improper use or malicious actions to be made by the person or persons using the database. Even if the scale of these threats is small, it pose a great risk to safety. One of the most influential factors in database security is the human factor. The inadequate level of knowledge of the people using the system may lead to the failure of security policies to be implemented correctly and the inability to regularly maintain and repair the machines in the system. 
ASP.NET, PhP, etc., use SQL structured programming language for querying and adding operations on database structure. Requests made through the user's internet browser results in data entry or data query on the database. This data entry and inquiry process also carries some risks. The manipulations to be made on the parameters used during the query are causing the failure. This weakness allows  non-authorized access to the database, while at the same time permitting modification of the data. This situation is called the injection. The most basic measure against injection attack is to control parameter values with a function against some special characters. The analysis of the current state of the application using the database will be the first step in identifying all the deficiencies. In the second step, a standard structure should be applied to the application codes and security audit must be applied for each transaction belonging to the database. It is also necessary to identify the points where the database security is weak and additional security precautions must be taken.
To reduce the damage of a successful SQL injection attack to a minimum, the privileges reserved for each database account must be restricted. If the database accounts used by application accounts are not database administrators, this will be an obstacle to providing any kind of access. Instead of the authorization to be given to the persons, the operation must be done according to the authorization required by the application. An account that has a read access needs to have only the read access. If an account needs to access to a table of information, then a structure must be created that limits access to that part of the table and provides access to the information in the table instead of the table below the account.
In this study, it is shown how to construct a structure to protect from injection. In the  ASP.NET structure and in a web application prepared in C # programming language, it has been transferred as a processing application that needs to be done on the database in order to protect users from injection. For the functions that provide query and modification of the data on the database, the information sent from the application is kept with parameters. The manner in which this parameter and function is retained is largely preserved from the injection attack. This structure, which is constructed, covers the work done in the programming language stage and is not enough by itself. However, the forms of access to users' databases include authorization and all other actions that may be recorded, followed by monitoring methods and risks.
A project has been carried out on two different platforms in line with the research done. The project creates student classroom tracking software designed on Microsoft SQL Server Management. In this software, a web-based project has been realized on the database which is created by using .NET technology. In the project, records and inquiries of the data have been realized with the table and stored procedure structure. During this process, all security vulnerabilities in the thesis content are audited. In the project design section, the stored procedure and table structures are also detailed in the thesis.
The second project is based on the MYSQL database, which has a lot of usage space. The project theme is to  analyze/monitor/audit the network traffic. The project was conducted by using MYSQL database and ASP.NET technology, two tables were used to query data and to update and add data. In the content of the project, the inquiries made within each page were taken to protect against the threat of injection.