<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sembang Programming &#187; sekuriti</title>
	<atom:link href="http://sembangprogramming.com/category/sekuriti/feed/" rel="self" type="application/rss+xml" />
	<link>http://sembangprogramming.com</link>
	<description>Sembangan mengenai pengaturcaraan</description>
	<lastBuildDate>Mon, 22 Aug 2011 06:49:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Cara terbaik untuk menghalang SQL Injection</title>
		<link>http://sembangprogramming.com/2010/09/cara-terbaik-untuk-menghalang-sql-injection/</link>
		<comments>http://sembangprogramming.com/2010/09/cara-terbaik-untuk-menghalang-sql-injection/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 14:11:24 +0000</pubDate>
		<dc:creator>mkhairul</dc:creator>
				<category><![CDATA[sekuriti]]></category>
		<category><![CDATA[Umum]]></category>

		<guid isPermaLink="false">http://sembangprogramming.com/?p=373</guid>
		<description><![CDATA[Terdapat soalan yang menanyakan, apakah cara terbaik untuk menghalang SQL Injection yang diambil daripada Stack Overflow. Cara terbaik untuk menghalangnya adalah dengan menggunakan prepared statement. Response tersebut juga menerangkan dengan lebih lanjut mengapa.]]></description>
			<content:encoded><![CDATA[<p>Terdapat <a href="http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php">soalan </a>yang menanyakan, apakah cara terbaik untuk menghalang SQL Injection yang diambil daripada Stack Overflow.</p>
<p>Cara terbaik untuk menghalangnya adalah dengan menggunakan prepared statement.<a href="http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php/60496#60496"> Response</a> tersebut juga menerangkan dengan lebih lanjut mengapa.</p>
]]></content:encoded>
			<wfw:commentRss>http://sembangprogramming.com/2010/09/cara-terbaik-untuk-menghalang-sql-injection/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Membasmi input-input durjana didalam Perl</title>
		<link>http://sembangprogramming.com/2009/11/membasmi-input-input-durjana-didalam-perl/</link>
		<comments>http://sembangprogramming.com/2009/11/membasmi-input-input-durjana-didalam-perl/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 04:58:11 +0000</pubDate>
		<dc:creator>mkhairul</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[sekuriti]]></category>
		<category><![CDATA[Tip]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://sembangprogramming.com/?p=198</guid>
		<description><![CDATA[Memandangkan saya banyak menggunakan Perl/CGI sejak kebelakangan ni, post ni adalah berkaitan dengan perl/cgi. Terdapat pengaturcara yang memandang ringan aspek sekuriti dalam perisian (kebanyakannya tak tahu, ignorance is bliss, no?) dan mengabaikannya sehinggalah suatu hari dimana perisian tersebut perlu menembusi pasaran yang lebih besar dan perlu melalui proses &#8220;penetration testing&#8221; (singkatan pen test) yang akan [...]]]></description>
			<content:encoded><![CDATA[<p>Memandangkan saya banyak menggunakan Perl/CGI sejak kebelakangan ni, post ni adalah berkaitan dengan perl/cgi. </p>
<p>Terdapat pengaturcara yang memandang ringan aspek sekuriti dalam perisian (kebanyakannya tak tahu, ignorance is bliss, no?) dan mengabaikannya sehinggalah suatu hari dimana perisian tersebut perlu menembusi pasaran yang lebih besar dan perlu melalui proses &#8220;<a href="http://en.wikipedia.org/wiki/Penetration_test">penetration testing</a>&#8221; (singkatan pen test) yang akan merungkaikan segala kelemahan yang telah diabaikan selama ini didalam pembangunan perisian tersebut.</p>
<p>Apabila terjadi begitu, maka bermulalah operasi menampal perisian daripada lubang-lubang sekuriti tersebut. Bagi kebanyakan input daripada pengguna dalam Perl/CGI, menggunakan &#8220;<strong>placeholder</strong>&#8221; adalah mencukupi untuk menyimpannya dengan selamat dalam pangkalan data (database) mengelakkan daripada SQL Injection. Rujuk article di perlmonks untuk penerangan lanjut, <strong><a href="http://www.perlmonks.org/?node_id=661423">Preventing SQL injection attacks: Placeholders are enough for MySQL, Postgresql and SQLite.</a></strong></p>
<p><a href="http://imgs.xkcd.com/comics/exploits_of_a_mom.png"><img src="http://sembangprogramming.com/wp-content/uploads/2009/11/exploits_of_a_mom-300x92.png" alt="exploits_of_a_mom" title="exploits_of_a_mom" width="300" height="92" class="aligncenter size-medium wp-image-202" /></a></p>
<p><strong>Apa bendakah itu &#8220;placeholder&#8221;?</strong><br />
Placeholder adalah nilai yang digunakan untuk menggantikan sesuatu nilai yang lain. </p>
<p>Berikut adalah contoh penggunaan placeholder.</p>
<pre class="perl" name="code">
$sth = $dbh->prepare( "SELECT name WHERE city = ? AND state = ?" );
$sth->execute( $city, $state );
</pre>
<p>Dengan menggunakan placeholder, modul <a href="http://search.cpan.org/~timb/DBI/DBI.pm">DBI</a> akan secara automatik menguruskan isu-isu &#8220;quoting&#8221; (escape single/double quote, e.g. \&#8221;) didalam nilai yang dihantar kepada pangkalan data.</p>
<p><strong>Kekurangan &#8220;placeholder&#8221;</strong><br />
Walaupun semua jenis input selamat dimasukkan kedalam database dengan menggunakan placeholder tanpa mengakibatkan SQL Injection, ia masih perlu diperiksa kesahihannya. Anda masih perlu untuk mengesahkan (validate) input yang dimasukkan samada ianya integer, numeric, alpha, alphanumeric, dsbnya.<br />
Jika input tersebut adalah berbentuk HTML, tukarkan semua character ke dalam <a href="http://search.cpan.org/~gaas/HTML-Parser-3.64/lib/HTML/Entities.pm">HTML Entities</a>, untuk mengelakkan daripada kes-kes <a href="http://en.wikipedia.org/wiki/Cross-site_scripting">XSS (Cross-site Scripting)</a>. Jika tiada HTML dibenarkan, gunakan <a href="http://search.cpan.org/~podmaster/HTML-Scrubber-0.08/Scrubber.pm">HTML::Scrubber</a> untuk sental semua html daripada input tersebut.</p>
<p>Berikut adalah contoh untuk menukarkan character-character ke bentuk HTML Entity</p>
<pre class="perl" name="code">
use HTML::Entities;
sub html_to_db{
    my ($html) = @_;
	$html = encode_entities($html);
	$html =~ s/\r\n//gs;
	return $html;
}
</pre>
<p>Marilah kita sama sama <strong>belajar mempertahankan diri</strong> daripada anasir-anasir yang tak diingini apabila membangunkan perisian.</p>
<p><a href="http://sembangprogramming.com/wp-content/uploads/2009/11/249141325_4913641b29.jpg"><img src="http://sembangprogramming.com/wp-content/uploads/2009/11/249141325_4913641b29.jpg" alt="249141325_4913641b29" title="249141325_4913641b29" width="500" height="274" class="aligncenter size-full wp-image-204" /></a></p>
<p>Selamat programming!</p>
]]></content:encoded>
			<wfw:commentRss>http://sembangprogramming.com/2009/11/membasmi-input-input-durjana-didalam-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bersihkan input menggunakan Perl</title>
		<link>http://sembangprogramming.com/2009/09/bersihkan-input-menggunakan-perl/</link>
		<comments>http://sembangprogramming.com/2009/09/bersihkan-input-menggunakan-perl/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 05:53:34 +0000</pubDate>
		<dc:creator>mkhairul</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[sekuriti]]></category>

		<guid isPermaLink="false">http://sembangprogramming.com/?p=176</guid>
		<description><![CDATA[Dalam pos ni, saya akan pos contoh kod untuk membersihkan input menggunakan perl. Mungkin ada module dalam CPAN yang dapat melakukannya tetapi saya tidak jumpa, mungkinkah ianya HTML::Scrubber? Saya pun tak pasti (dah lama tak buat perl). Kod dibawah agak ringkas. use HTML::Entities (); use CGI qw/:standard/; $query = new CGI; $username = $query -> [...]]]></description>
			<content:encoded><![CDATA[<p>Dalam pos ni, saya akan pos contoh kod untuk membersihkan input menggunakan perl. Mungkin ada module dalam CPAN yang dapat melakukannya tetapi saya tidak jumpa, mungkinkah ianya HTML::Scrubber? Saya pun tak pasti (dah lama tak buat perl).</p>
<p>Kod dibawah agak ringkas.</p>
<pre name="code" class="perl">
use HTML::Entities ();
use CGI qw/:standard/;

$query = new CGI;

$username	= $query -> param('username');
$password	= $query -> param('password');

$sql = qq~
	SELECT somefields
	FROM user
	WHERE username = ?
	AND password = ?
~;

$ok_chars = 'a-zA-Z0-9 ,-';
$c_username = HTML::Entities::decode( $username);
$c_username =~ s/[^$ok_chars]//go;

$dbquery = $conn->prepare($sqlstatement);
$dbquery->execute("$c_username", "$password" ) or &#038;error("SQL&#038;Couldn't execute statement: $DBI::errstr");
</pre>
<p>Jika ada cara lain, silalah kongsi! Terima kasih.</p>
]]></content:encoded>
			<wfw:commentRss>http://sembangprogramming.com/2009/09/bersihkan-input-menggunakan-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Penghasilan kata laluan (password) di dalam perisian</title>
		<link>http://sembangprogramming.com/2009/09/penghasilan-kata-laluan-password-di-dalam-perisian/</link>
		<comments>http://sembangprogramming.com/2009/09/penghasilan-kata-laluan-password-di-dalam-perisian/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 18:05:06 +0000</pubDate>
		<dc:creator>mkhairul</dc:creator>
				<category><![CDATA[sekuriti]]></category>
		<category><![CDATA[Tip]]></category>

		<guid isPermaLink="false">http://sembangprogramming.com/?p=108</guid>
		<description><![CDATA[Bagaimana anda menghasilkan kata laluan pengguna apabila akaunnya dihasilkan? Menggunakan MD5? SHA-1? Ok, bagus kerana encrypt kata laluan kerana kebanyakan orang menggunakan kata laluan yang sama untuk pelbagai perkhidmatan (services). Apa akan jadi kalau tak encrypt kata laluan? Tak jadi ape ape pun dari segi fungsi aplikasi, tetapi akibatnya adalah dari segi perundangan (link menerangkan Data [...]]]></description>
			<content:encoded><![CDATA[<p>Bagaimana anda menghasilkan kata laluan pengguna apabila akaunnya dihasilkan? Menggunakan MD5? SHA-1? Ok, bagus kerana encrypt kata laluan kerana kebanyakan orang menggunakan kata laluan yang sama untuk pelbagai perkhidmatan (services).</p>
<p><strong>Apa akan jadi kalau tak encrypt kata laluan?</strong></p>
<p>Tak jadi ape ape pun dari segi fungsi aplikasi, tetapi akibatnya adalah dari segi <a href="http://stackoverflow.com/questions/1193697/storing-password-in-databases-in-plain-text-vs-customer-needs/1193852#1193852">perundangan</a> (link menerangkan Data Protection Act di UK, tak pasti di Malaysia ada ke tak). Kalau orang dapat masuk server melalui exploit OS ataupun perisian lain kemudian dump database, mereka terpaksa lalui lagi satu halangan, encrypted password. Kalau tak encrypt (istilah &#8216;tak encrypt&#8217; selalu digunakan sebagai &#8216;plain-text&#8217;)? Larian tanpa halangan la jawabnya.</p>
<p><strong>Ok, dah encrypt? Cukupkah?</strong></p>
<p>Tak cukup! Kena tambah garam (<a href="http://en.wikipedia.org/wiki/Salt_(cryptography)">salt</a>) sikit, sebagai penambah perisa. Kenapa? Sebab teks yang telah encrypt tu boleh dipadankan dengan menggunakan pengkalan data seperti <a href="http://gdataonline.com/">GData: An Online MD5 Hash Database</a>. Bahayakan?</p>
<p>Bila tambah garam sikit, agak sukar untuk teks tersebut ditukar kembali (reverse lookup) kerana ia takkan jumpa walaupun anda menggunakan kata laluan generic seperti <strong>qwe123</strong>.</p>
<p><strong>Jadi, macam mana nak tambah garam?</strong></p>
<pre name="code" class="php">$salt = substr($password, 1, 3);
$e_password = md5($password . $salt);</pre>
<p>Macam tu je. Mudah. Harap maklumat ni dapat membantu sedikit sebanyak.</p>
<p><strong>Edit:</strong> Menggunakan $salt pada $e_password = md5($password . $salt)</p>
]]></content:encoded>
			<wfw:commentRss>http://sembangprogramming.com/2009/09/penghasilan-kata-laluan-password-di-dalam-perisian/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

