Upload dan Download File dengan Codeigniter

Upload
Upload adalah proses transmisi sebuah file dari sebuah komputer ke sistem komputer yang lainnya dengan arah yang berkebalikan dengan download. Dari internet user dapat melakunan proses upload dimana user mengirimkan file ke komputer lain yang memintanya.

Download
Download adalah proses transmisi sebuah file dari sebuah sistem komputer ke sistem komputer yang laiinnya. Dari internet, user yang melakukan proses download adalah proses dimana users meminta/request sebuah file dari sebuah komputer lain (website, server, atau lainnya) dan menerimanya.

Pada proses kali ini saya akan menjelaskan bagaimana cara Upload dan Download sebuah file menggunakan Framework Codeigniter.

Buat sebuah database dengan test_upload. Kemudian buat lah struktur tabel sperti berikut:
CREATE TABLE IF NOT EXISTS `tb_image` (
   `ID_image` int(11) NOT NULL AUTO_INCREMENT,
   `file_name` varchar(50) NOT NULL,
   `file_type` varchar(50) NOT NULL,
   `file_path` varchar(50) NOT NULL,
   `full_path` varchar(100) NOT NULL,
   `raw_name` varchar(50) NOT NULL,
   `orig_name` varchar(50) NOT NULL,
   `client_name` varchar(50) NOT NULL,
   `file_ext` varchar(50) NOT NULL,
   `file_size` varchar(10) NOT NULL,
   `image_width` varchar(10) NOT NULL,
   `image_height` varchar(10) NOT NULL,
   `image_type` varchar(10) NOT NULL,
   `image_size_str` varchar(50) NOT NULL,
   PRIMARY KEY (`ID_image`)
);
Jika database dan tabel nya sudah dibuat maka selanjutnya buka file database.php di ./application/config/database.php. Dan atur konfigurasi nya seperti berikut:
$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
   'dsn' => '',
   'hostname' => 'localhost',
   'username' => 'root',
   'password' => '',
   'database' => 'test_upload',
   'dbdriver' => 'mysqli',
   'dbprefix' => '',
   'pconnect' => FALSE,
   'db_debug' => (ENVIRONMENT !== 'production'),
   'cache_on' => FALSE,
   'cachedir' => '',
   'char_set' => 'utf8',
   'dbcollat' => 'utf8_general_ci',
   'swap_pre' => '',
   'encrypt' => FALSE,
   'compress' => FALSE,
   'stricton' => FALSE,
   'failover' => array(),
   'save_queries' => TRUE
);
Buka file autoload.php di ./application/config/autoload.php. Dan atur seperti berikut ini:
$autoload['libraries'] = array(
   'database',
   'form_validation',
   'session'
);

$autoload['helper'] = array(
   'url',
   'html',
   'download'
);
Buka file config.php di ./application/config/config.php. Dan atur seperti berikut ini:
$config['base_url'] = 'http://localhost/upload/'; // harus sesuai dengan root folder project Anda
Dan kemudian buka file routes.php di ./application/config/routes.php. Dan atur seperti berikut ini:
$route['default_controller'] = 'upload';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
Buat sebuah file controller baru dengan nama upload.php di ./application/controllers/. Dan ketikkan sintak berikut:
<?php
class Upload extends CI_Controller {
 
 public function __construct() {
   parent::__construct();
 }

 public function index() {
   $config = array(
     'upload_path' => 'upload/',
     'allowed_types' => 'gif|jpg|png|', // |extensi lainnya
     'max_size' => '0',
     //'encrypt_name' => true // meng-enkripsi nama file
   );
   $this->load->library('upload', $config);
 
   if ($this->upload->do_upload('file_name')) {
     $data = $this->upload->data();
 
     $query = array(
       'file_name' => $data['file_name'],
       'file_type' => $data['file_type'],
       'file_path' => $data['file_path'],
       'full_path' => $data['full_path'],
       'raw_name' => $data['raw_name'],
       'orig_name' => $data['orig_name'],
       'client_name' => $data['client_name'],
       'file_ext' => $data['file_ext'],
       'file_size' => $data['file_size'],
       'image_width' => $data['image_width'],
       'image_height' => $data['image_height'],
       'image_type' => $data['image_type'],
       'image_size_str' => $data['image_size_str']
     );
     $this->db->insert('tb_image', $query);
     $this->session->set_flashdata('msg', 'File berhasil di input!');
     redirect(site_url());
   }

   $data['result'] = $this->db->get('tb_image')->result();
   $this->load->view('upload_view', $data);
 }

 public function download_file($str) {
   force_download('./upload/'.$str, null);
 }
 
}
Buat sebuah file baru dengan upload_view di ./application/views/. Dan ketikkan sintak berikut ini:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Upload dan Download</title>
</head>
<body>
<?php
echo $this->session->flashdata('msg');
 
echo form_open_multipart();
echo form_upload('file_name');
echo form_submit('upload', 'Upload');
echo form_close();
?>
 
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
  <tr>
  <td></td>
  <th align="left">File Name</th>
  <th align="left">File Type</th>
  <th align="left">Full Path</th>
  <th align="left">File Size</th>
  </tr>

  <?php
  foreach ($result as $data) {
    echo '<tr>';
    echo '<td>'.img(array('src' => 'upload/'.$data->file_name, 'width' => '80', 'height' => '50')).'</td>';
    echo '<td>'.$data->file_name.'</td>';
    echo '<td>'.$data->file_type.'</td>';
    echo '<td>'.$data->full_path.'</td>';
    echo '<td>'.$data->file_size.'</td>';
    echo '<td>'.anchor('upload/download_file/'.$data->file_name, 'Download').'</td>';
    echo '</tr>';
  }
  ?>
</table>
</body>
</html>
Dan terakhir buat lah sebuah folder baru dengan nama upload. Maka akan membentuk stuktur folder sebagai berikut:
./application/
./system/
./upload/
index.php

Mencari Data dan Situs dengan Google

Google adalah sebuah situs mesin pencari (search engine) yang cepat dan canggih di internet. Dengan Google Anda dapat mencari informasi data, artikel, file, gambar, peta, berita, situs, dan sebagainya hanya dengan menggunakan kata kunci tertentu.

Google sudah menyediakan beberapa pilihan bahasa sehingga bisa diakses dengan bahasa yang Anda pahami. Secara umum jenis pencarian di dalam Google ada dua (2) macam yaitu Basic Search dan Advanced Search. Basic Search digunakan untuk melakukan pencarian dasar sedangkan Advanced Search digunakan untuk melakukan pencarian lanjut. Karena begitu banyaknya informasi yang terdapat di intermet, maka ada kemungkinan hasil informasi yang Anda cari tidak sesuai dengan harapan yang akhirnya membuat Anda bingung. Oleh karena itu Anda bisa memanfaatkan operator pencarian tertentu untuk membatasi hasil pencarian agar sesuai dengan yang diharapkan. Beberapa operator pencarian yang bisa Anda gunakan antara lain:
  • And: untuk mencari gabungan dari kedua kata yang dicari. Misalnya, bunga and mawar akan mencari informasi tentang bunga mawar.
  • Or: untuk mencari salah satu dari kedua kata yang dicari. Misalnya, sepeda or motor akan mencari informasi tentang sepeda atau motor.
  • Frase: untuk mencari frase dari kata yang dicari dengan menggunakan tanda kutip "". Misalnya, "virus komputer" akan mencari informasi tentang virus komputer.
  • Tanda Minus (-): untuk mencari data di depan tanda minus (-) bukan yang di belakang tanda minus (-). Misalnya, burung -garuda akan mencari informasi tentang burung bukan garuda.
  • Sinonim (~): untuk mencari kata beserta sinonimnya, Misalnya, ~pantai akan mencari informasi tentang pantai beserta sinonimnya.
  • Define: untuk mencari definisi kata yang dicari. Misalnya, define:internet akan mencari informasi tentang definisi internet.
  • Link: untuk mencari link yang mengarah ke alamat situs yang dicari. Misalnya, link:meurnosystem.blogspot.co.id akan mencari informasi link yang mengarah ke situs meurnosystem.blogspot.co.id.
  • Related: untuk mencari alamat situs yang hampir sama. Misalnya, related:meurnosystem.blogspot.co.id akan mencari alamat situs yang mirip dengan situs meurnosystem.blogspot.co.id.
  • Info: untuk mencari informasi yang lengkap tentang sebuah situs. Misalnya, info:meurnosystem.blogspot.co.id akan mencari informasi yang lengkap tentang situ meurnosystem.blogspot.co.id
  • Filetype: untuk mencari file-file dengan jenis tertentu yang dicari seperti doc, xls, ppt, pdf, text, dan lain-lain. Misalnya, internet filetype:pdf akan mencari file-file jenis PDF tentang internet.
  • Allintitle: untuk mencari informasi berdasarkan seluruh kata pada judul halaman website. Misalnya, allintitle:program komputer akan mencari informasi yang memiliki judul program komputer.
  • Intitle: untuk mencari informasi berdasarkan salah satu kata pada judul halaman website. Misalnya, program intitle:komputer akan mencari informasi yang memiliki judul program atau komputer.
  • Allinurl: untuk mencari URL yang mengadung seluruh kata yang dicarai. Misalnya, allinurl:jaringan internet akan mencari URL yang mengandung kata jaringan dan internet.
  • Inurl: untuk mencari URL yang mengandung salah satu kat yang dicari. Misalnya, inurl:jaringan internet akan mencari URL yang mengandung kata jaringan atau internet.

Sistem informasi manajemen

Sistem informasi manajemen atau SIM (bahasa Inggris: management information system, MIS) adalah sistem perencanaan bagian dari pengendalian internal suatu bisnis yang meliputi pemanfaatan manusia, dokumen, teknologi, dan prosedur oleh akuntansi manajemen untuk memecahkan masalah bisnis seperti biaya produk, layanan, atau suatu strategi bisnis. Sistem informasi manajemen dibedakan dengan sistem informasi biasa karena SIM digunakan untuk menganalisis sistem informasi lain yang diterapkan pada aktivitas operasional organisasi. Secara akademis, istilah ini umumnya digunakan untuk merujuk pada kelompok metode manajemen informasi yang bertalian dengan otomasi atau dukungan terhadap pengambilan keputusan manusia, misalnya sistem pendukung keputusan, sistem pakar, dan sistem informasi eksekutif.

Pengertian Menurut Para Ahli
  • Bodnar dan Hopwood; buku Accounting Information System : Kumpulan perangkat keras dan perangkat lunak yang dirancang untuk mentransformasikan data dalam bentuk informasi yang berguna.
  • Turban, McLean, dan Waterbe; buku Information Technology for Management Making Connection for Strategies Advantages : Sistem yang mengumpulkan, memproses, menyimpan, menganalisa, dan menyebarkan informasi untuk tujuan yang spesifik.
  • L. James Havery; Sistem merupakan prosedur logis dan rasional guna melakukan atau merancang suatu rangkaian komponen yang berhubungan satu sama lain.
  • Ludwig Von Bartalanfy; Sistem merupakan seperangkat unsur yang saling terikat dalam suatu antar relasi di antara unsur-unsur tersebut dengan lingkungan.
  • O’brien; Sistem adalah sekelompok komponen yang saling berhubungan, bekerja sama untuk mencapai tujuan bersama dengan menerima input serta menghasilkan output dalam transformasi yang teratur.
  • Azhar Susanto; Sistem adalah kumpulan/group dari sub sistem/bagian/komponen apapun baik fisik maupun non fisik yang saling berhubungan satu sama lain dan bekeaan, pengendalian, pengevaluasian, dan perbaikan berkelanjutan.
Sumber : https://id.wikipedia.org/

Sistem Informasi

Sistem Informasi (SI) adalah kombinasi dari teknologi informasi dan aktivitas orang yang menggunakan teknologi itu untuk mendukung operasi dan manajemen. Dalam arti yang sangat luas, istilah sistem informasi yang sering digunakan merujuk kepada interaksi antara orang, proses algoritma, data, dan teknologi. Dalam pengertian ini, istilah ini digunakan tidak hanya pada penggunaan organisasi teknologi informasi dan komunikasi (TIK), tetapi juga cara di mana orang berinteraksi dengan teknologi ini dalam mendukung proses bisnis.

Ada perbedaan yang jelas antara sistem informasi, dan komputer sistem TIK, dan proses bisnis. Sistem informasi yang berbeda dari teknologi informasi dalam sistem informasi biasanya terlihat seperti memiliki komponen TIK. Hal ini terutama berkaitan dengan tujuan pemanfaatan teknologi informasi. Sistem informasi juga berbeda dari proses bisnis. Sistem informasi membantu untuk mengontrol kinerja proses bisnis.

Alter berpendapat, sistem informasi sebagai tipe khusus dari sistem kerja. Sistem kerja adalah suatu sistem di mana manusia atau mesin melakukan pekerjaan dengan menggunakan sumber daya untuk memproduksi produk tertentu atau jasa bagi pelanggan. Sistem informasi adalah suatu sistem kerja yang kegiatannya ditujukan untuk pengolahan (menangkap, transmisi, menyimpan, mengambil, memanipulasi dan menampilkan) informasi.

Dengan demikian, sistem informasi berhubungan dengan sistem data di satu sisi dan sistem aktivitas di sisi lain. Sistem informasi adalah suatu bentuk komunikasi sistem di mana data yang mewakili dan diproses sebagai bentuk dari memori sosial. Sistem informasi juga dapat dianggap sebagai bahasa semi formal yang mendukung manusia dalam pengambilan keputusan dan tindakan.

Suatu sistem di dalam suatu organisasi yang mempertemukan kebutuhan pengolahan transaksi harian, mendukung operasi, bersifat manajerial dan kegiatan strategi dari suatu organisasi dan menyediakan pihak luar tertentu dengan laporan-laporan yang diperlukan.

Komponen
Komponen prosedur dalam SI (Sistem Informasi) berkaitan dengan prosedur manual dan prosedur berbasis komputer serta standar untuk mengolah data menjadi informasi yang berguna. Suatu prosedur adalah urutan langkah yang dilakukan untuk menyelesaikan satu atau lebih aktifitas pengolahan informasi. Pengolahan informasi ini dapat dikerjakan dengan pengguna, atau kombinasi pengguna dan staff TI. Suatu bisnis terdiri dari berbagai macam prosedur yang digabungkan secara logis untuk membentuk suatu sistem. Sebagai contoh sistem yang umumnya ada dalam suatu organisasi adalah sistem penggajian, personalia, akuntansi, dan gudang.

SI (Sistrm Informasi) dapat dikategorikan dalam empat bagian:
  1. Sistem Informasi Manajemen
  2. Sistem pendukung keputusan
  3. Sistem Informasi Eksekutif
  4. Sistem Pemrosesan Transaksi
Sumber : https://id.wikipedia.org/

Penulisan For dalam PHP

Struktur perulangan (loop) adalah instruksi program yang bertujuan untuk mengulang beberapa baris perintah. Dalam merancang perulangan kode program, setidaknya harus mengetahui 3 komponen, yaitu kondisi awal dari perulangan, perintah program yang akan diulang, serta kondisi akhir dimana perulangan akan berhenti.

Sebagai contoh untuk perulangan for, saya sedang belajar membuat program PHP untuk menampilkan 10 baris kalimat “saya sedang belajar membuat program PHP”.
<?php
for ($i = 1; $i <= 10; $i++) {
   echo "Saya sedang belajar PHP";
   echo "<br />";
}
Jika dijalankan perintah tersebut, maka di web browser akan tampil sebanyak 10 kalimat.

Penulisan Struktur Perulangan For
Untuk kondisi perulangan for, kita setidaknya membutuhkan 3 kondisi, yaitu di kondisi awal perulangan, kondisi pada saat perulangan, dan kondisi yang harus dipenuhi agar perulangan berhenti.
for (start; condition; increment) {
   statement;
}
  • Start adalah kondisi pada saat awal perulangan. Biasanya kondisi awal ini digunakan untuk membuat dan memberikan nilai kepada variabel counter yang digunakan untuk mengontrol perulangan.
  • Condition adalah kondisi yang harus dipenuhi agar perulangan dijalankan. Selama kondisi ini terpenuhi, maka PHP akan terus melakukan perulangan. Biasanya variabel counter digunakan untuk mengatur akhir perulangan.
  • Increment adalah bagian yang digunakan untuk memproses variabel counter agar bisa memenuhi kondisi akhir perulangan. Biasanya, pada bagian inilah kita akan membuat kondisi dari variabel counter.
  • Statement adalah bagian kode program yang akan diproses secara terus-menerus selama proses perulangan berlangsung. Untuk statement ini, kita membuat blok program di antara tanda kurung kurawal ({ dan }) sebagai penanda bahwa bagian di dalam kurung kurawal inilah yang akan dikenai proses perulangan.
Sebagai contoh, perulangan untuk menampilkan angka 1-15 kedalam web browser:
<?php
for ($i = 1; $i <= 15; $i++) {
   echo $i;
   echo "<br />";
}
Jika dijalankan kode tersebut, maka di dalam web browser akan tampil urutan angka dari 1 sampai dengan 15.

Sebagai kondisi awal dari perulangan tersebut adalah $i = 1, dimana saya memberikan nilai 1 kepada variabel $i. Variabel $i inilah yang akan menjadi counter atau penghitung dari perulangan for.

Untuk kondisi akhir $i <= 15, jadi selama variabel $i bernilai kurang atau sama dengan 15, maka perulangan akan terus dijalankan.

Sebagai contoh lain, perulangan untuk menampilkan angka 0-100, namun untuk kelipatan 10, seperti: 0.10.20..dst, sampai dengan 100.
<?php
for ($i= 0; $i <= 100; $i = $i + 10) {
   echo $i;
   echo "<br />";
}

Mengamankan Aplikasi Terhadap SQL Injection

SQL Injection dapat dengan mudah diatasi dalam kebanyakan bahasa pemrograman yang menargetkan aplikasi website atau menawarkan fungsi. Dalam DBI di Perl, metode DBI::quote meloloskan karakter-karakter khusus (anggaplah variabel $sql menyimpan referensi ke sebuah objek DBI):
$query = $sql->prepare
(
   "select * from pengguna where nama = "
   .
   $sql->quote($nama_pengguna)
);
Namun begitu, secara umum ini bukan jalan yang terbaik dalam menghadapi masalah tersebut. DBI mengizinkan penggunaan placeholder, yang memperbolehkan Anda untuk mengikat data ke sebuah pernyataan secara terpisah dari pendefinisian pernyataan SQL tersebut. Untuk database yang tidak mendukung placeholder, DBI menirukannya dengan menggunakan fungsi DBI::quote secara otomatis pada nilai-nilai. Banyak sistem database yang mendukung pengikatan nilai secara terpisah melalui API mereka; DBI akan menggunakan dukungan placeholder asli tersebut dalam hal ini. Sebagai contoh:
$query = $sql->prepare("select * from tb_users where username = ?");
$query->execute($username);
Keuntungannya adalah Anda tidak perlu mengingat untuk menggunakan DBI::quote kepada setiap nilai. Nilai-nilai akan diikat secara terpisah, atau dikutip secara benar, tergantung pada dukungan yang ditawarkan oleh SMBD tertentu yang Anda gunakan. Anda kemudian terhindari dari masalah dasar SQL Injection di mana nilai-nilai diinterpretasi sebagai SQL.

Bagi sistem database yang mendukung placeholder secara asli, seringkali ada keuntungan kinerja yang nyata untuk menggunakan placeholder, karena database dapat menyimpan cache dari sebuah perwakilan pernyataan yang terkompilasi dan menggunakannya secara berulang di antara pelaksanaan-pelaksanaan dengan nilai-nilai ikatan yang berbeda. Placeholder kadang-kadang juga disebut sebagai "variabel pengikat".

Dalam PHP, terdapat beberapa fungsi bawaan yang berbeda untuk digunakan pada SMBD yang berbeda untuk meloloskan nilai-nilai yang cocok untuk diimbuhkan dalam pernyataan-pernyataan SQL. Untuk MySQL, yang serupa dengan ini adalah fungsi bawaan mysql_real_escape_string:
$query_result = mysql_query(
   "select * from tb_users where username = '".
   mysql_real_escape_string($username)
   ."'"
);
Antarmuka asli untuk sebuah SMBD tertentu dapat juga menawarkan sebuah metode untuk melakukan pengikatan placeholder secara terpisah, misalnya mysql_stmt_bind_param atau oci_bind_by_name. Selain itu, sebuah pustaka abstraksi database dapat digunakan untuk menirukan placeholder dalam cara yang mirip dengan DBI dari Perl. Sebuah contoh dari beberapa pustaka yang ada ialah ADOdb.

Perbaikan database
Mengatur hak-hak keamanan pada database ke kebutuhan yang paling minim adalah sebuah perbaikan yang sederhana. Tidak banyak aplikasi yang memerlukan pengguna untuk memiliki hak menghapus sebuah tabel atau database.

Kebanyakan database juga menawaran kemampuan untuk menyiapkan pernyataan-pernyataan SQL pada lapisan database melalui stored procedure. Daripada menggunakan sebuah lapisan aplikasi untuk merangkai SQL secara dinamis, stored procedure membungkus prosedur-prosedur database pakai-ulang yang dipanggil dengan parameter-parameter bertipe. Ini menyediakan beberapa keuntungan keamanan dengan membuat masukan-masukan menjadi parameter dan mewajibkan tipe pada mereka, masukan pengguna secara efektif tersaring. Sebagai tambahan, kebanyakan database mengizinkan stored procedure untuk berjalan di bawah hak-hak keamanan yang berbeda daripada pengguna database. Misalnya, sebuah aplikasi akan memiliki akses untuk menjalankan sebuah stored procedure, tetapi tidak memiliki akses ke tabel-tabel dasarnya. Ini membatasi kemampuan aplikasi untuk melakukan sesuatu yang di luar aksi-aksi yang dituliskan di dalam stored procedure.

Yang juga penting untuk dicatat adalah metode query standar dari pustaka client C MySQL tidak akan mengizinkan lebih daripada sebuah query dalam sebuah masukan. Namun begitu, masukan pengguna baik-baik yang mengandung karakter-karakter pelolos (misalnya tanda kutip tunggal) tetap dapat menyebabkan aplikasi tidak berjalan karena sintaks SQL yang buruk. Bahkan beberapa serangan juga mungkin terjadi, sebagai contoh misalkan sebuah situs website yang memperlihatkan sebuah daftar barang untuk sebuah nama pengguna yang dikenal. Query yang dijalankan adalah:
SELECT * from tb_barang where nama_barang='$nama_barang';
Seorang penyerang dapat memakai nama barang yang dirangkai secara khusus untuk mengetahui semua barang milik semua pengguna:
$namapengguna = "' or namapengguna is not null or namapengguna='";
Menghasilkan pernyataan SQL sebagai berikut:
SELECT * from tb_barang where nama_barang='' or nama_barang is not null or nama_barang='';
Ingatlah, walaupun begitu, bahwa meloloskan atau menghapus tanda kutip tidak melenyapkan risiko SQL Injection sepenuhnya. Misalkan query Anda tampak seperti ini:
SELECT * from tb_barang where id_barang=$id_barang;
Dengan anggapan bahwa $id_barang merupakan nilai numerik tetapi dibiarkan lolos tanpa diperiksa, $id_barang yang dirangkai khusus ini akan, sekali lagi, memperlihatkan semua barang milik semua pengguna:
$id_barang = "33 or id_barang is not null or user_id=44";
Yang seperti dapat Anda lihat, tidak mengandung tanda kutip sama sekali dan akan menghasilkan query ini:
SELECT * from tb_barang where id_barang=33 or id_barang is not null or user_id=44;
Pertahanan yang terbaik, daripada membuat daftar hitam masukan buruk yang diketahui, adalah hanya mengizinkan masukan baik yang diketahui, atau, dengan kata lain, membuat daftar putih. Misalnya, jika Anda ingin bertahan terhadap serangan ini, Anda dapat memeriksa variabel id_barang untuk memastikan bahwa isinya numerik seperti berikut:
if(!ctype_digit($id_barang)) {
   die("Karakter-karakter yang tidak sah dalam id_barang.");
}

Sumber : https://id.wikipedia.org/ 

SQL Injection

Injeksi SQL (SQL Injection) adalah sebuah teknik yang menyalahgunakan sebuah celah keamanan yang terjadi dalam lapisan database sebuah aplikasi. Celah ini terjadi ketika masukan data dari pengguna tidak disaring secara benar dari karakter-karakter pelolos bentukan string yang diimbuhkan dalam SQL atau masukan pengguna tidak bertipe kuat dan karenanya waktu dijalankan tidak sesuai dengan harapan.

Bentuk-bentuk celah keamanan SQL Injection
Bentuk SQL Injection ini terjadi ketika masukan dari pengguna tidak disaring dari karakter-karakter pelolos dan kemudian diteruskan ke dalam sebuah pernyataan SQL. Ini menimbulkan potensi untuk memanipulasi pernyataan-pernyataan yang dilakukan pada database oleh pengguna.

Contoh celah keamanan SQL Injection:
pernyataan := "select * from tb_users where username = '" + username +"';"
Jika variabel "username" dirangkai sedemikian rupa oleh pengguna yang bermaksud buruk, pernyataan SQL tersebut bisa melakukan lebih daripada yang develop maksudkan. Sebagai contoh, mengatur variabel "username" sebagai
a' or 't' = 't
Menjadikan pernyataan SQL ini:
SELECT * FROM tb_users WHERE username = 'a' or 't'='t';
Jika kode ini akan digunakan dalam sebuah prosedur untuk melakukan otentikasi, maka contoh ini dapat dipakai untuk memaksakan pemilihan sebuah nama pengguna yang sah karena evaluasi 't'='t' akan selalu bernilai benar.

Secara teori, perintah SQL sah apapun bisa diinjeksi melalui metode ini, termasuk menjalankan banyak pernyataan. Nilai "username" pada pernyataan di bawah ini akan menyebabkan dihapusnya tabel "tb_users" dan juga pengambilan semua data dari tabel "tb_data":
a';
DROP TABLE tb_users;
SELECT * FROM tb_data WHERE username LIKE '%
Masukan ini menjadikan pernyataan SQL sebagai berikut:
SELECT * FROM tb_users WHERE username = 'a';
DROP TABLE tb_users;
SELECT * FROM tb_data WHERE username LIKE '%';
Penanganan tipe yang tidak benar
Bentuk SQL Injection ini terjadi ketika sebuah unsur masukan dari pengguna tidak bertipe kuat atau tidak diperiksa batasan-batasan tipenya. Ini dapat terjadi ketika sebuah unsur numerik akan digunakan dalam sebuah pernyataan SQL, tetapi develop tidak melakukan pemeriksaan untuk memastikan bahwa masukan pengguna adalah numerik. Sebagai contoh:
pernyataan := "SELECT * FROM tb_data WHERE id = " + variabel_a + ";"
Terlihat jelas dari pernyataan ini develop memaksudkan variabel_a menjadi sebuah nomor yang berhubungan dengan unsur "id". Namun, jika pada kenyataannya itu adalah sebuah string, maka pengguna terakhir dapat memanipulasi pernyataan tersebut sesukanya, dan karena itu mengabaikan kebutuhan akan karakter-karakter pelolos. Sebagai contoh, mengeset variabel_a sebagai
1;
DROP TABLE tb_users
Akan menghapus tabel "tb_users" dari database karena hasil akhir SQL-nya akan menjadi sebagai berikut:
SELECT * FROM tb_data WHERE id = 1;
DROP TABLE tb_users;
Terkadang celah-celah keamanan dapat berada dalam perangkat lunak server database itu sendiri, seperti yang terjadi pada fungsi-fungsi real_escape_chars() di server MySQL.

Sumber : wikipedia.org

Perintah Dasar CRUD dengan SQL

Sebelum memulai langsung ke tujuan ada lebih baik nya kita mengenal terlebih dahulu SQL? SQL (Structured Query Language) adalah bahasa pemrograman khusus yang digunakan untuk memanajemen data dalam RDBMS. SQL biasanya berupa perintah sederhana yang berisi instruksi-instruksi untuk menipulasi data. Perintah SQL sering juga disingkat dengan sebutan "query".

Jenis - jenis perintah SQL

  • Data Definition Language (DDL) adalah jenis instruksi SQL yang berkaitan dengan pembuatan struktur tabel maupun database. Termasuk diantaranya : CREATE, DROP, ALTER, dan RENAME.
  • Data Manipulation Language (DML) adalah jenis instruksi SQL yang berkaitan dengan data yang ada dalam tabel, tentang bagaiaman menginput, menghapus, memperbarui serta membaca data yang tersimpan di dalam database. Contoh perintah : SELECT, INSERT, DELETE, dan UPDATE.
  • Data Control Language (DCL) adalah jenis instruksi SQL yang berkaitan dengan manajemen hak akses dan penggunaan (user) yang dapat mengakses database maupun tabel. Termasuk diantaranya : GRANT dan REVOKE.
  • Transaction Control Language (TCL) adalah perintah SQL untuk proses transaksi. Proses transaksi ini digunakan untuk perintah yang lebih dari 1, namun harus berjalan semua, atau tidak sama sekali. Seperti aplikasi transfer uang dalam sistem database perbankan. Setidaknya ada 2 perintah, mengurangi uang nasabah A dan menambah uang nasabah B. Termasuk diantaranya : COMMIT, ROLLBACK, dan SET TRANSACTION.
  • Programmatic SQL berkaitan dengan sub program (stored procedure) maupun penjelasan mengenai struktur database. Termasuk diantaranya : DECLARE, EXPLAIN, PREPARE, dan DESCRIBE.
Pertama buat database dengan nama crud_database dengan perintah query sebagai berikut:

CREATE DATABASE crud_database;
USE crud_database;

Sekarang buat sebuah tabel dengan query sebagai berikut:


Sekarang mari kita jabarkan apa itu CRUD yang lebih dikenal secara umum. C (create) merupakan istilah untuk meng-insert data ke dalam database. Perhatikan query berikut:


R (read) merupakan istilah untuk membaca isi dari tabel atau select data dari tabel. Perhatikan query berikut:

SELECT * FROM tb_crud

Fungsi query diatas mengambil seluruh data dari database tanpa ada pengecualian field apa saja yang harus di pilih. Terus bagaimana kalau hanya ingin mengambil field nama dan telp saja.

SELECT name, telp FROM tb_crud

U (update) merupakan istilah untuk memperbarui data di tabel database atau mengedit. Perhatikan query berikut:



Dan yang terakhir D (delete) merupakan istilah untuk menghapus data dari tabel database. Perhatikan query berikut:


Harga Infinix Zero 3

Infinix Zero 3 dilengkapi dengan kamera utama beresolusi 20.7 MP yang membawa fitur phase detection autofocus, dual led flash, dan kemampuan merekan video beresolusi 4K. Selain itu, Infinix Zero 3 juga dilengkapi dengan kamera selfie beresolusi 5 MP, layar berukuran 5.5 inci dengan resolusi Full HD dan dilindungi lapisan Corning Gorilla Glass 3.

Terlebih didalamnya sudah terpasang perpaduan komponen hardware berkelas, yang ditenagai prosesor Mediatek Helio X10 dengan kecepatan Octa Core 2.0 GHz. Selain itu, terpasang juga RAM 3 GB beserta GPU PowerVR G6200 yang mengoptimalkan kinerja ponsel ini dalam memainkan game android, memori internal kapasitas 16 GB, dan slot memori eksternal akan menambahkan media penyimpanan smartphone ini. Pada bagian baterai berkapasitas 3.030 mAh yang cukup irit.
Harga Smartphone Infinix Zero 3
Harga Rp. 2.599.000
Ukuran Layar IPS LCD capacitive touchscreen, 5.5 Inches, 1080 x 1920 pixels, (~440 ppi pixel density)
Memori Internal 16 GB, Ekternal (Support MicroSD)
Ram 2 GB
Sistem Operasi Android Lollipop
Processor Mediatek MT6795 Helio X10, Octa Core 2.0 Ghz
Kecepatan Internet HSPA, LTE Cat4 150/50 Mbps
Konektivitas Dual Sim, 3G HSPA, 4G LTE, Wi-Fi, USB OTG
Kamera Belakang 20.7 Megapixel , phase detection autofocus, dual-LED flash
Kamera Depan 5 Megapixel
Baterai Non-removable Li-Po 3030 mAh

Apa itu PHP dan Mengapa Membutuhkannya?

PHP mungkin adalah scripting yang paling populer di website. Hal ini digunakan untuk meningkatkan halaman website. Dengan PHP, Anda dapat melakukan hal-hal seperti membuat username dan password login halaman, memeriksa rincian form, membuat forum, galeri gambar, survei, dan banyak lagi.

PHP dikenal sebagai bahasa server-sided, karena itu PHP tidak dijalankan di komputer Anda, tapi komputer Anda meminta halaman. Hasilnya kemudian diserahkan kepada Anda, dan ditampilkan dalam browser.

PHP adalah singkatan dari Hypertext Preprocessor, Tapi itu akan membuat HPP. Penjelasan lain adalah bahwa inisial berasal sari versi awal pemrograman, yang disebut Personal Home Page Tools. Setidaknya ada huruf "PHP" dalam urutannya.