{"id":416,"date":"2018-10-26T04:15:32","date_gmt":"2018-10-26T04:15:32","guid":{"rendered":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/?p=416"},"modified":"2018-10-26T05:45:06","modified_gmt":"2018-10-26T05:45:06","slug":"menangkal-serangan-sql-injection-di-form-login","status":"publish","type":"post","link":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/menangkal-serangan-sql-injection-di-form-login\/","title":{"rendered":"Menangkal Serangan SQL Injection Di Form Login"},"content":{"rendered":"<p>Seperti yang sudah dijelaskan pada postingan sebelumnya, SQL injection merupakan salah satu jenis teknik penyerangan yang ditujukan ke database di server. Cara yang digunakan sebenarnya sangat sederhana, yaitu attacker berusaha memasukkan nilai inputan tertentu melalui form login.<\/p>\n<div>\n<p>Untuk mencegah SQL injection, kita harus mengamankan value yang dikirim field melalui form. Jangan pernah menggunakan parameter dari URL atau form tanpa melakukan validasi.<\/p>\n<p>Berikut ini adalah contoh pengkodean yang buruk :<\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token variable\">$pass<\/span><span class=\"token operator\">=<\/span><span class=\"token global\">$_POST<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">'password'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token variable\">$user<\/span><span class=\"token operator\">=<\/span><span class=\"token global\">$_POST<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">'username'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token variable\">$sql<\/span><span class=\"token operator\">=<\/span><span class=\"token function\">mysql_query<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"select * from admin where password='$pass' and username='$user'\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n<p>Sekarang bagaimana cara membut kode diatas menjadi aman. Ada beberapa cara yang sering digunakan untuk mengamankan nilai input, yaitu:<\/p>\n<p><strong>Menggunakan mysql_real_escape_string()<\/strong><\/p>\n<p>Penggunaannya bisa digabungkan dengan fungsi trim(). Berikut ini adalah contoh scriptnya :<\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token variable\">$pass<\/span><span class=\"token operator\">=<\/span><span class=\"token function\">mysql_real_escape_string<\/span><span class=\"token punctuation\">(<\/span><span class=\"token global\">$_POST<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">'password'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token variable\">$user<\/span><span class=\"token operator\">=<\/span><span class=\"token function\">mysql_real_escape_string<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">trim<\/span><span class=\"token punctuation\">(<\/span><span class=\"token global\">$_POST<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">'username'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token variable\">$sql<\/span><span class=\"token operator\">=<\/span><span class=\"token function\">mysql_query<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"select * from admin where password='$pass' and username='$user'\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n<p>Fungsi mysql_real_escape_string digunakan untuk mem-bypass karakter spesial dalam query SQL, sehingga jika attacker mnyertakan karakter seperti &#8216; ! ^ ] &#8221; dan lain sebagainya, maka fungsi ini tidak akan membaca karakter tersebut.<\/p>\n<p><strong>Menggunakan addslashes()<\/strong><\/p>\n<p>Penggunaannya bisa digabungkan dengan fungsi trim(). Berikut ini adalah contoh scriptnya:<\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token variable\">$pass<\/span><span class=\"token operator\">=<\/span><span class=\"token function\">addslashes<\/span><span class=\"token punctuation\">(<\/span><span class=\"token global\">$_POST<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">'password'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token variable\">$user<\/span><span class=\"token operator\">=<\/span><span class=\"token function\">addslashes<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">trim<\/span><span class=\"token punctuation\">(<\/span><span class=\"token global\">$_POST<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">'username'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token variable\">$sql<\/span><span class=\"token operator\">=<\/span><span class=\"token function\">mysql_query<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"select * from admin where password='$pass' and username='$user'\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n<p><strong>Encript Password<\/strong><\/p>\n<p>Hal lain yang perlu diperhatikan yaitu mengenskript password sebelum disimpan kedalam database. Anda dapat menggunakan MD5\u00a0 atau fungsi enscript lainnya. Contoh<\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token variable\">$pass<\/span><span class=\"token operator\">=<\/span><span class=\"token function\">md5<\/span><span class=\"token punctuation\">(<\/span><span class=\"token global\">$_POST<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">'password'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token variable\">$user<\/span><span class=\"token operator\">=<\/span><span class=\"token function\">mysql_real_escape_string<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">trim<\/span><span class=\"token punctuation\">(<\/span><span class=\"token global\">$_POST<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">'username'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token variable\">$sql<\/span><span class=\"token operator\">=<\/span><span class=\"token function\">mysql_query<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"select * from admin where password='$pass' and username='$user'\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Seperti yang sudah dijelaskan pada postingan sebelumnya, SQL injection merupakan salah satu jenis teknik penyerangan yang ditujukan ke database di server. Cara yang digunakan sebenarnya sangat sederhana, yaitu attacker berusaha memasukkan nilai inputan tertentu melalui form login. Untuk mencegah SQL injection, kita harus mengamankan value yang dikirim field melalui form. Jangan pernah menggunakan parameter dari [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":272,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":""},"categories":[11],"tags":[],"_links":{"self":[{"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/posts\/416"}],"collection":[{"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/comments?post=416"}],"version-history":[{"count":1,"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/posts\/416\/revisions"}],"predecessor-version":[{"id":417,"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/posts\/416\/revisions\/417"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/media\/272"}],"wp:attachment":[{"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/media?parent=416"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/categories?post=416"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/tags?post=416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}