Şimdi Ara

SQL Injection'dan nasıl korunabilirim?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
9
Cevap
0
Favori
466
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba,

    arkadaşlar ben sql injection'dan korunmak istiyorum. Forumdaki bazı sorulara baktım. Parametre kullan diyorlar. Ama parametre derkan bir kod örneği verebilecek var mı?

    HELP PLEASSE!!!



  • https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters(v=vs.110).aspx
     
    private static void UpdateDemographics(Int32 customerID,
    string demoXml, string connectionString)
    {
    // Update the demographics for a store, which is stored
    // in an xml column.
    string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
    + "WHERE CustomerID = @ID;";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
    SqlCommand command = new SqlCommand(commandText, connection);
    command.Parameters.Add("@ID", SqlDbType.Int);
    command.Parameters["@ID"].Value = customerID;

    // Use AddWithValue to assign Demographics.
    // SQL Server will implicitly convert strings into XML.
    command.Parameters.AddWithValue("@demographics", demoXml);

    try
    {
    connection.Open();
    Int32 rowsAffected = command.ExecuteNonQuery();
    Console.WriteLine("RowsAffected: {0}", rowsAffected);
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    }
    }
    }




  • quote:

    Orijinalden alıntı: alpmirza

    https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters(v=vs.110).aspx
     
    private static void UpdateDemographics(Int32 customerID,
    string demoXml, string connectionString)
    {
    // Update the demographics for a store, which is stored
    // in an xml column.
    string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
    + "WHERE CustomerID = @ID;";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
    SqlCommand command = new SqlCommand(commandText, connection);
    command.Parameters.Add("@ID", SqlDbType.Int);
    command.Parameters["@ID"].Value = customerID;

    // Use AddWithValue to assign Demographics.
    // SQL Server will implicitly convert strings into XML.
    command.Parameters.AddWithValue("@demographics", demoXml);

    try
    {
    connection.Open();
    Int32 rowsAffected = command.ExecuteNonQuery();
    Console.WriteLine("RowsAffected: {0}", rowsAffected);
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    }
    }
    }


    Php için yok mu?




  • Sanırım store procedure kullanmanızı tavsiye etmişler. Yani sql sorgularını kod tarafında değil de mssql tarafında parametre alan sorgular şeklinde yazıyorsunuz. Kod tarafında ise sizin yazdığınız sorgu görünmüyor sadece parametreler görünür. Bildiğim kadarıyla daha hızlı ve güvenli bir yöntem. Tecrübeli arkadaşlar daha fazla bilgi verebilir.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Merhaba,
    http://php.net/manual/tr/function.filter-input.phphttps://www.w3schools.com/php/func_filter_input.asphttp://php.net/manual/tr/function.filter-input-array.phphttps://www.w3schools.com/php/func_filter_input_array.asp

    bu linkler sayesinde sql injectiona karşı korunabilir miyim (tamamen) ?

    Lütfen yardım edin.

    Cevaplarınız için şimdiden çok teşekkür ederim.

    İyi günler dileğiyle.

    @alpmirza @el-harezmi_0



    < Bu mesaj bu kişi tarafından değiştirildi webandyazilimprofesor -- 23 Ağustos 2017; 20:21:3 >




  • webandyazilimprofesor W kullanıcısına yanıt
    Hocam alıntı yaparsanız daha iyi olur. Yoksa haberdar olamıyoruz.

    https://soulsecurity.wordpress.com/2012/12/05/sql-injection-temel-saldiri-ve-savunma/amp/



    https://www.olympos.net/howto-nasil/sql-injection/adim-adim-sql-injection-93419.html



    http://www.burakavci.com.tr/2014/01/sql-injection-login-bypass.html?m=1



    http://www.zskblog.com/detay.aspx?id=22

    https://www.cyber-warrior.org/Dokuman/Default.Asp?Data_id=704



    http://www.ismailsaygili.com.tr/2014/05/php-scriptlerde-sql-injection-tespiti-ve-exploit-etme.html?m=1



    Muhtemelen bu siteleri sizde incelemişsinizdir ancak yinede başka arkadaşlara yardımcı olabilir.



    < Bu mesaj bu kişi tarafından değiştirildi el-harezmi_0 -- 24 Ağustos 2017; 0:13:6 >
    < Bu ileti mobil sürüm kullanılarak atıldı >




  • quote:

    Orijinalden alıntı: el-harezmi_0

    Hocam alıntı yaparsanız daha iyi olur. Yoksa haberdar olamıyoruz.

    https://soulsecurity.wordpress.com/2012/12/05/sql-injection-temel-saldiri-ve-savunma/amp/



    https://www.olympos.net/howto-nasil/sql-injection/adim-adim-sql-injection-93419.html



    http://www.burakavci.com.tr/2014/01/sql-injection-login-bypass.html?m=1



    http://www.zskblog.com/detay.aspx?id=22

    https://www.cyber-warrior.org/Dokuman/Default.Asp?Data_id=704



    http://www.ismailsaygili.com.tr/2014/05/php-scriptlerde-sql-injection-tespiti-ve-exploit-etme.html?m=1



    Muhtemelen bu siteleri sizde incelemişsinizdir ancak yinede başka arkadaşlara yardımcı olabilir.

    Merhaba,

    linkler için çok teşekkür ederim. Tırnak yöntemini denedim. Yani "Or'='Or" yöntemini ve hemen giriş yaptı. ADMİN PANELİNE BİLE.

    Veriğiniz linklerden şu linki :http://www.zskblog.com/detay.aspx?id=22&utm_campaign=DonanimHaber&utm_medium=referral&utm_source=DonanimHaber

    çok beğendim. Korunma yöntemleri olarak. Bu linkdeki korunma yöntemlerini uygularsak sql injection'dan tamamen korunabilir miyiz?

    Biliyorum her zaman tamamen korunabilir miyiz sorusunu soruyorum. Ama sonuç da o kadar emek verince insan tamamen saldırılardan korunmak istiyor.

    Lütfen yardım edin.

    Cevaplarınız için şimdiden çok teşekkür ederim.

    İyi günler dileğiyle.




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • kullanıcının ne yazacağı belli olmaz.bu yüzden kullanıcıdan alıp veritabanına gönderdiğin her şeyi düzenlemen gerekiyor.mesela ben c# ta aşağıdaki metodu kullanıyorum

    public static string Sorguyu_Duzenle(string metin)
    {
    string strReturn = metin.Trim();
    strReturn = strReturn.Replace(">", "_zararlı karakter_");
    strReturn = strReturn.Replace("<", "_zararlı karakter_");
    strReturn = strReturn.Replace("--", "_zararlı karakter_");
    strReturn = strReturn.Replace("'", "_zararlı karakter_");
    strReturn = strReturn.Replace("char ", "_zararlı karakter_");
    strReturn = strReturn.Replace("delete ", "_zararlı karakter_");
    strReturn = strReturn.Replace("insert ", "_zararlı karakter_");
    strReturn = strReturn.Replace("update ", "_zararlı karakter_");
    strReturn = strReturn.Replace("select ", "_zararlı karakter_");
    strReturn = strReturn.Replace("truncate ", "_zararlı karakter_");
    strReturn = strReturn.Replace("union ", "_zararlı karakter_");
    strReturn = strReturn.Replace("script ", "_zararlı karakter_");

    return strReturn;
    }

    gördüğün gibi örneğin delete yazarsa değiştiriyorum.normalde _zararlı karakter_ kısmını herkes "" böyle yazar.bu projeye böyle yapmak istedim.

    kullanıcıdan aldığın veriyi önce böyle değiştirip sonra sql e parametre olarak gönderirsen sorun kalmaz.başka zararlı karakterlerde olabilir.




  • Using PDO (for any supported database driver):
    $stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');

    $stmt->execute(array('name' => $name));

    foreach ($stmt as $row) {
    // do something with $row
    }
    Using MySQLi (for MySQL):
    $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
    $stmt->bind_param('s', $name);

    $stmt->execute();

    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
    // do something with $row
    }

    tabi temelde kullanıcıdan gelen hiçbir değere güvenme prensibi yatar.

    Mesela, zamanında hemen tüm kargo firmalarının kargo takip sisteminde sorunları vardı. Tutup ardışık sayı kullanmışlar kargo takip numarası için. Adam oturmuş basit bir tool yazmış. tek tek kargoları takip ediyor ? yani adresleri topluyor.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.