Apa bedanya saat menggunakan GET
atau POST
metode? Mana yang lebih aman? Apa kelebihan (dis) masing-masing dari mereka?
Apa bedanya saat menggunakan GET
atau POST
metode? Mana yang lebih aman? Apa kelebihan (dis) masing-masing dari mereka?
Jawaban:
Ini bukan masalah keamanan. Protokol HTTP mendefinisikan permintaan tipe-GET sebagai idempoten , sementara POST mungkin memiliki efek samping. Dalam bahasa Inggris biasa, itu artinya GET digunakan untuk melihat sesuatu, tanpa mengubahnya, sementara POST digunakan untuk mengubah sesuatu. Misalnya, halaman pencarian harus menggunakan GET, sedangkan formulir yang mengubah kata sandi Anda harus menggunakan POST.
Juga, perhatikan bahwa PHP sedikit membingungkan konsep. Permintaan POST mendapat input dari string kueri dan melalui badan permintaan. Permintaan GET baru saja mendapat input dari string kueri. Jadi permintaan POST adalah superset dari permintaan GET; Anda dapat menggunakan $_GET
dalam permintaan POST, dan bahkan mungkin masuk akal untuk memiliki parameter dengan nama yang sama $_POST
dan $_GET
itu berarti hal yang berbeda.
Misalnya, katakanlah Anda memiliki formulir untuk mengedit artikel. Artikel-id mungkin ada di string kueri (dan, jadi, tersedia melalui $_GET['id']
), tetapi katakanlah Anda ingin mengubah artikel-id. Id baru kemudian dapat hadir di badan permintaan ( $_POST['id']
). Oke, mungkin itu bukan contoh terbaik, tapi saya harap ini menggambarkan perbedaan antara keduanya.
Ketika pengguna memasukkan informasi dalam formulir dan klik Kirim, ada dua cara informasi dapat dikirim dari browser ke server: di URL, atau di dalam tubuh permintaan HTTP.
Metode GET, yang digunakan dalam contoh sebelumnya, menambahkan pasangan nama / nilai ke URL. Sayangnya, panjang URL terbatas, jadi metode ini hanya berfungsi jika hanya ada beberapa parameter. URL dapat dipotong jika formulir menggunakan sejumlah besar parameter, atau jika parameter tersebut berisi sejumlah besar data. Selain itu, parameter yang diteruskan pada URL terlihat di bidang alamat browser bukan tempat terbaik untuk kata sandi ditampilkan.
Alternatif untuk metode GET adalah metode POST. Metode ini mengemas pasangan nama / nilai di dalam isi permintaan HTTP, yang menjadikan URL lebih bersih dan tidak memberikan batasan ukuran pada output formulir. Itu juga lebih aman.
Jawaban terbaik adalah yang pertama.
Anda menggunakan:
GET
sangat mampu 'mengirim' data juga, jadi bukan jawaban yang sangat akurat.
Ada dua implikasi "keamanan" yang umum digunakan GET
. Karena data muncul di string URL, seseorang yang mungkin melihat dari balik bahu Anda di Bilah Alamat / URL mungkin dapat melihat sesuatu yang tidak boleh mereka ketahui seperti cookie sesi yang berpotensi digunakan untuk membajak sesi Anda. Perlu diingat bahwa setiap orang memiliki ponsel kamera.
Implikasi keamanan lain GET
berkaitan dengan GET
variabel yang sedang dicatat ke sebagian besar akses web server log sebagai bagian dari URL yang meminta. Tergantung pada situasi, iklim peraturan dan sensitivitas umum data ini berpotensi menimbulkan kekhawatiran.
Beberapa klien / firewall / sistem IDS mungkin mengernyit atas GET
permintaan yang berisi jumlah data berlebihan dan karenanya dapat memberikan hasil yang tidak dapat diandalkan.
POST
mendukung fungsionalitas tingkat lanjut seperti dukungan untuk input biner multi-bagian yang digunakan untuk mengunggah file ke server web.
POST
membutuhkan tajuk panjang konten yang dapat meningkatkan kompleksitas penerapan klien spesifik aplikasi karena ukuran data yang dikirim harus diketahui terlebih dahulu mencegah permintaan klien terbentuk dalam mode inkremental single-pass eksklusif. Mungkin masalah kecil bagi mereka yang memilih untuk menyalahgunakan HTTP
dengan menggunakannya sebagai transportasi RPC (Remote Procedure Call).
Yang lain telah melakukan pekerjaan dengan baik dalam meliput perbedaan semantik dan bagian "kapan" dari pertanyaan ini.
Saya menggunakan GET ketika saya mengambil informasi dari URL dan POST ketika saya mengirim informasi ke URL.
Anda harus menggunakan POST jika ada banyak data, atau semacam informasi sensitif (hal yang sangat sensitif memerlukan koneksi yang aman juga).
Gunakan DAPATKAN jika Anda ingin orang dapat mem-bookmark halaman Anda, karena semua data disertakan dengan bookmark.
Berhati-hatilah terhadap orang-orang yang memukul REFRESH dengan metode GET, karena data akan dikirim lagi setiap kali tanpa memperingatkan pengguna (POST terkadang memperingatkan pengguna tentang pengiriman kembali data).
Dokumen W3C ini menjelaskan penggunaan HTTP GET dan POST.
Saya pikir ini adalah sumber yang otoritatif.
Ringkasannya adalah (bagian 1.3 dari dokumen):
- Gunakan DAPATKAN jika interaksi lebih seperti pertanyaan (yaitu, itu adalah operasi yang aman seperti permintaan, operasi baca, atau pencarian).
- Gunakan POST jika:
- Interaksi lebih seperti pesanan, atau
- Interaksi mengubah keadaan sumber daya dengan cara yang akan dirasakan pengguna (misalnya, berlangganan layanan), atau
- Pengguna bertanggung jawab atas hasil interaksi.
Metode Dapatkan dan Posting tidak ada hubungannya dengan teknologi server yang Anda gunakan, kerjanya sama di php, asp.net atau ruby. GET dan POST adalah bagian dari protokol HTTP. Seperti yang telah dicatat, POST lebih aman. Formulir POST juga tidak di-cache oleh browser. POST juga digunakan untuk mentransfer data dalam jumlah besar.
Alasan menggunakan POST saat membuat perubahan data:
Selain itu, jangan masukkan informasi sensitif dalam string kueri (hanya opsi dengan GET) karena muncul di bilah alamat, bookmark, dan log server.
Semoga ini menjelaskan mengapa orang mengatakan POST 'aman'. Jika Anda mengirim data sensitif, Anda harus menggunakan SSL.
GET
dan POST
merupakan metode HTTP yang dapat mencapai tujuan serupa
GET
pada dasarnya hanya untuk mendapatkan (mengambil) data, A GET
tidak boleh memiliki badan, jadi selain dari cookie, satu-satunya tempat untuk menyampaikan info adalah di URL dan URL panjangnya terbatas, GET
kurang aman dibandingkan dengan POST
karena data yang dikirim adalah bagian dari URL
Jangan pernah gunakan GET
saat mengirim kata sandi, kartu kredit, atau informasi sensitif lainnya !, Data dapat dilihat oleh semua orang di URL, Dapat di-cache data.
GET
tidak berbahaya ketika kita memuat ulang atau memanggil tombol kembali, itu akan ditandai buku, parameter tetap dalam riwayat browser, hanya karakter ASCII yang diizinkan.
POST
dapat melibatkan apa saja, seperti menyimpan atau memperbarui data, atau memesan produk, atau mengirim email. POST
Metode memiliki tubuh.
POST
metode diamankan untuk meneruskan informasi sensitif dan rahasia ke server tidak akan terlihat dalam parameter kueri di URL dan parameter tidak disimpan dalam riwayat peramban. Tidak ada batasan panjang data. Saat kami memuat ulang, peramban harus memberi tahu pengguna bahwa data akan dikirimkan kembali. POST
metode tidak dapat di-bookmark
Gunakan metode GET jika Anda ingin mengambil sumber dari URL. Anda selalu dapat melihat halaman terakhir jika Anda menekan tombol kembali browser Anda, dan itu bisa di-bookmark, sehingga tidak seaman metode POST.
Gunakan metode POST jika Anda ingin 'mengirimkan' sesuatu ke URL. Misalnya Anda ingin membuat akun google dan Anda mungkin perlu mengisi semua informasi terperinci, maka Anda menekan tombol 'kirim' (metode POST disebut di sini), setelah Anda berhasil mengirim, dan mencoba menekan tombol kembali browser Anda , Anda akan mendapatkan kesalahan atau formulir kosong baru, bukan halaman terakhir dengan formulir yang diisi.
The GET
Metode:
Ini hanya digunakan untuk mengirim tanggal 256 karakter
Saat menggunakan metode ini, informasi dapat dilihat di browser
Ini adalah metode default yang digunakan oleh formulir
Tidak begitu aman.
The POST
Metode:
Ini digunakan untuk mengirim data tanpa batas.
Dengan metode ini, informasi tidak dapat dilihat di browser
Anda dapat menyebutkan POST
metode secara eksplisit
Itu lebih terjamin daripada GET
metode
Ini menyediakan fitur yang lebih canggih