{"id":6586,"date":"2021-06-05T21:53:11","date_gmt":"2021-06-05T14:53:11","guid":{"rendered":"https:\/\/www.jetorbit.com\/panduan\/?p=6586"},"modified":"2021-06-05T21:53:15","modified_gmt":"2021-06-05T14:53:15","slug":"apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya","status":"publish","type":"post","link":"https:\/\/www.jetorbit.com\/panduan\/apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya\/","title":{"rendered":"Apa Itu SQL Injection dan Bagamaina Cara Mengatasinya?"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Daftar Isi Artikel<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.jetorbit.com\/panduan\/apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya\/#Sejarah_Singkat_SQL_Injection\" >Sejarah Singkat SQL Injection<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.jetorbit.com\/panduan\/apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya\/#Apa_itu_SQL_Injection\" >Apa itu SQL Injection ?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.jetorbit.com\/panduan\/apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya\/#Apa_Yang_terjadi_jika_Serangan_SQL_injection_berhasil\" >Apa Yang terjadi jika Serangan SQL injection berhasil ?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.jetorbit.com\/panduan\/apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya\/#Contoh_SQL_injection\" >Contoh SQL injection<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.jetorbit.com\/panduan\/apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya\/#Cara_Mengatasi_SQL_Injection\" >Cara Mengatasi SQL Injection<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.jetorbit.com\/panduan\/apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya\/#1_Lakukan_Validasi_Sebelum_User_menginput\" >1. Lakukan Validasi Sebelum User menginput<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.jetorbit.com\/panduan\/apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya\/#2_Membatasi_Read-Access\" >2. Membatasi Read-Access&nbsp;<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.jetorbit.com\/panduan\/apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya\/#3_Membuat_Example_dan_Explanation_SQL_statement\" >3. Membuat Example dan Explanation SQL statement<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.jetorbit.com\/panduan\/apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya\/#4_Jangan_Bagikan_User_database\" >4. Jangan Bagikan User database<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.jetorbit.com\/panduan\/apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya\/#5_Menggunakan_Parameter_Queri\" >5. Menggunakan Parameter Queri<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.jetorbit.com\/panduan\/apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya\/#Kesimpulan\" >Kesimpulan<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>SQL Injection memungkinkan Hacker jahat untuk menyuntikkan kode arbitrer dalam queri SQL.<\/p>\n\n\n\n<p>Sehingga dapat secara langsung mengambil dan mengubah data yang disimpan dalam database Sebuah Website.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Sejarah_Singkat_SQL_Injection\"><\/span>Sejarah Singkat SQL Injection<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Pada Perkembangan awal dunia internet, membangun website sangatlah mudah,tanpa JavaScript, tanpa CSS, dan hanya sedikit gambar. Namun seiring popularitas web, kebutuhan akan teknologi yang lebih maju dan situs web dinamis semakin meningkat. Membuat Berkembangnya CGI dan bahasa server-side seperti ASP, JSP dan PHP.<\/p>\n\n\n\n<p>Sejak saat itu Situs web berubah dan mulai menyimpan inputan hasil pengguna dan konten situs dalam basis data. Oleh karena itu tidak mengherankan bahwa setiap bahasa scripting server-side yang populer menambahkan SQL database Sebagai pendukung tempat menyimpanya data. <\/p>\n\n\n\n<p>Oleh Sebab itu banyak sekali peretas yang memanfaatkan hal ini untuk memasukan virus mereka ke dalam server database dan kemudian dapat di gunakan untuk Keperluan mereka.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Apa_itu_SQL_Injection\"><\/span>Apa itu SQL Injection ?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>SQL Injection adalah kerentanan keamanan web yang memungkinkan penyerang mengganggu queri yang dibuat aplikasi ke basis datanya. Biasanya memungkinkan hacker untuk melihat data yang biasanya tidak dapat mereka ambil.  Dalam banyak kasus, hacker dapat memodifikasi atau menghapus data , yang dapat menyebabkan perubahan terus-menerus pada konten atau perilaku aplikasi.<\/p>\n\n\n\n<p>Dalam beberapa situasi, hacker dapat meningkatkan serangan SQL Injection untuk mengkompromikan server yang mendasarinya atau infrastruktur back-end lainnya.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Apa_Yang_terjadi_jika_Serangan_SQL_injection_berhasil\"><\/span>Apa Yang terjadi jika Serangan SQL injection berhasil ?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Serangan SQL Injection yang berhasil dapat mengakibatkan akses tidak sah ke data sensitif, seperti kata sandi, detail kartu kredit, atau informasi pengguna pribadi. Banyak pelanggaran kehilangan data profil tinggi dalam beberapa tahun terakhir adalah akibat dari serangan injeksi SQL, yang menyebabkan kerusakan reputasi dan denda peraturan. Dalam beberapa kasus,Hacker dapat memperoleh backdoor persisten ke dalam sistem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Contoh_SQL_injection\"><\/span>Contoh SQL injection<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Ada berbagai macam kerentanan, serangan, dan teknik injeksi SQL, yang muncul dalam situasi yang berbeda. Beberapa contoh injeksi SQL umum meliputi:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Retrieving hidden data<\/strong>, di mana Anda dapat memodifikasi queri SQL untuk mengembalikan hasil tambahan.<\/li><li><strong>Subverting application logic,<\/strong> di mana Anda dapat mengubah kueri untuk mengganggu logika aplikasi.<\/li><li><strong>UNION attacks<\/strong>,di mana Anda dapat mengambil data dari tabel database yang berbeda.<\/li><li><strong>Examining the database,<\/strong> di mana Anda dapat mengekstrak informasi tentang versi dan struktur database<\/li><li><strong>Blind SQL injection<\/strong>, di mana hasil kueri yang Anda kontrol tidak dikembalikan dalam respons aplikasi.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Cara_Mengatasi_SQL_Injection\"><\/span>Cara Mengatasi SQL Injection<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Bahasa server-side tidak dapat menentukan apakah string queri SQL salah format. Yang bisa mereka lakukan hanyalah mengirim string ke server database dan menunggu respons yang ditafsirkan.<\/p>\n\n\n\n<p>Jadi, harus ada cara untuk membersihkan input pengguna dan memastikan injeksi SQL tidak dapat dilakukan. ada banyak cara untuk membersihkan input pengguna, mulai dari menerapkan addlashes() PHP secara global ke semuanya, hingga menerapkan sanitasi ke variabel &#8220;clean&#8221; pada saat merakit SQL query itu sendiri, seperti membungkus $_GET[&#8216;id&#8217;] di atas dalam fungsi mysql_escape_string() PHP. Namun, menerapkan sanitasi pada queri itu sendiri adalah praktik pengkodean yang sangat buruk dan sulit untuk dipertahankan atau dilacak. Di sinilah sistem database telah menggunakan penggunaan pernyataan yang disiapkan.<\/p>\n\n\n\n<p>Di bawah Ini adalah beberapa Cara untuk mengatasi SQL injection :<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Lakukan_Validasi_Sebelum_User_menginput\"><\/span>1. Lakukan Validasi Sebelum User menginput<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Langkah pertama yang umum untuk mencegah serangan injeksi SQL adalah memvalidasi input pengguna. Pertama, identifikasi pernyataan SQL yang penting dan buat daftar whitelist untuk semua pernyataan SQL yang valid, dengan mengabaikan pernyataan yang tidak valid dari queri. Proses ini dikenal sebagai validasi input atau desain ulang queri.<\/p>\n\n\n\n<p>Selain itu, Anda harus mengonfigurasi input untuk data pengguna berdasarkan konteks. Misalnya, bidang input untuk alamat email dapat difilter untuk memungkinkan hanya karakter dalam alamat email, seperti karakter \u201c@\u201d yang diperlukan. Demikian pula, nomor telepon dan nomor Identitas hanya boleh difilter untuk memungkinkan jumlah digit tertentu untuk masing-masing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Membatasi_Read-Access\"><\/span>2. Membatasi <strong>Read-Access&nbsp;<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>perlindungan injeksi SQL paling rendah adalah mengonfigurasi read-access ke database. Jika organisasi Anda hanya membutuhkan pengguna aktif yang menggunakan read-access, itu pasti lebih mudah untuk di konfigurasikan. langkah tambahan ini sangat penting untuk menghentikan hacker mengubah informasi yang disimpan.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_Membuat_Example_dan_Explanation_SQL_statement\"><\/span>3. Membuat Example dan Explanation SQL statement<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Tidak ada sistem basis data utama yang beroperasi seperti <strong>printf<\/strong> . MySQL, secara langsung, membutuhkan setidaknya dua perintah (yang pertama PPREPARE dan kedua EKSEKUSI). PHP, melalui PDO library juga memerlukan pendekatan susun yang serupa, seperti berikut ini:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$stmt = $dbh->prepare(\"SELECT * FROM users WHERE USERNAME = ? AND PASSWORD = ?\");$stmt->execute(array($username, $password));<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"4_Jangan_Bagikan_User_database\"><\/span>4. Jangan Bagikan User database<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Ketika anda memiliki akses ke sebuah database website maka simpanlah user dan password dari database tersebut. <\/p>\n\n\n\n<p>Anda jangan pernah membagikan atau membicarakan user dan password database ini. Karena jika ada yang mengetahuinya maka bisa menyebabkan terhack nya sistem database anda.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"5_Menggunakan_Parameter_Queri\"><\/span>5. Menggunakan Parameter Queri<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Sebagian besar contoh injeksi SQL dapat dicegah dengan menggunakan  berparameter Queri (juga dikenal sebagai pernyataan yang disiapkan).<\/p>\n\n\n\n<p>Kode berikut rentan terhadap injeksi SQL karena input pengguna digabungkan langsung ke dalam kueri:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">String query = \"SELECT * FROM products WHERE category = '\"+ input + \"'\";\nStatement statement = connection.createStatement();\nResultSet resultSet = statement.executeQuery(query);<\/pre>\n\n\n\n<p>Kode ini dapat dengan mudah ditulis ulang dengan cara mencegah input pengguna mengganggu struktur queri:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>PreparedStatement statement = connection.prepareStatement(\"SELECT * FROM products WHERE category = ?\");<\/code>\n<code>statement.setString(1, input);<\/code>\n<code>ResultSet resultSet = statement.executeQuery();<\/code><\/pre>\n\n\n\n<p>Parameter Queri dapat digunakan untuk situasi apa pun di mana input yang tidak tepercaya muncul sebagai data dalam queri, termasuk <strong>WHERE<\/strong> klausa dan nilai statement&nbsp;<code>INSERT<\/code>&nbsp;atau&nbsp;<code>UPDATE<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Kesimpulan\"><\/span>Kesimpulan<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>SQL injection sebenarnya bisa dengan mudah di atasi asalkan anda tidak membuat celah para hacker untuk bisa memasukan Virusnya kedalam Database .<\/p>\n\n\n\n<p>Demikian Pembahasan Terkait Apa Itu SQL Injection dan Bagamaina Cara Mengatasinya, semoga bisa bermanfaat \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SQL Injection memungkinkan Hacker jahat untuk menyuntikkan kode arbitrer dalam queri SQL. Sehingga dapat secara langsung mengambil dan mengubah data yang disimpan dalam database Sebuah Website. Sejarah Singkat SQL Injection Pada Perkembangan awal dunia internet, membangun website sangatlah mudah,tanpa JavaScript, tanpa CSS, dan hanya sedikit gambar. Namun seiring popularitas web, kebutuhan akan teknologi yang lebih [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":2809,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[215],"tags":[489],"class_list":["post-6586","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-internet","tag-apa-itu-sql-injection-dan-bagamaina-cara-mengatasinya"],"_links":{"self":[{"href":"https:\/\/www.jetorbit.com\/panduan\/wp-json\/wp\/v2\/posts\/6586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jetorbit.com\/panduan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jetorbit.com\/panduan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jetorbit.com\/panduan\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jetorbit.com\/panduan\/wp-json\/wp\/v2\/comments?post=6586"}],"version-history":[{"count":3,"href":"https:\/\/www.jetorbit.com\/panduan\/wp-json\/wp\/v2\/posts\/6586\/revisions"}],"predecessor-version":[{"id":6592,"href":"https:\/\/www.jetorbit.com\/panduan\/wp-json\/wp\/v2\/posts\/6586\/revisions\/6592"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jetorbit.com\/panduan\/wp-json\/wp\/v2\/media\/2809"}],"wp:attachment":[{"href":"https:\/\/www.jetorbit.com\/panduan\/wp-json\/wp\/v2\/media?parent=6586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jetorbit.com\/panduan\/wp-json\/wp\/v2\/categories?post=6586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jetorbit.com\/panduan\/wp-json\/wp\/v2\/tags?post=6586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}