ඔබ තවමත් Widane Forums සාමාජිකයෙක් නෙවෙයි ද..?

Widane Forums හි සියළුම ලිපිවල ඇති සියළුම Links වෙත පිවිසීමට නම් ලියාපදිංචිවීම අනිවාර්යයි.
ඔබගේ සියලුම තාක්ෂණික ගැටළු සඳහා විසඳුම් සොගැනීමට වගේම දැනුම බෙදාගැනීම සඳහා මෙහි ඉඩකඩ වෙන්කර තිබෙනවා.
ඉතින් ඇයි තවත් බලාගෙන ඉන්නේ ඉක්මනින් ලියාපදිංචිවී ඔබගේ දැනුම වැඩිකරගන්න.

Register Here




Welcome, Guest
You have to register before you can post on our site.

Username/Email:
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 3,127
» Latest member: GAYA SHENU
» Forum threads: 817
» Forum posts: 5,632

Full Statistics

Online Users
There are currently 30 online users.
» 0 Member(s) | 26 Guest(s)
Google, UptimeRobot, Bing, Yandex

Latest Threads
Building a blog in PHP [...
Forum: PHP
Last Post: Induwara Uthsara
9 hours ago
» Replies: 3
» Views: 75
අපේම හොස්ටින් Company එකක...
Forum: The Lounge
Last Post: Induwara Uthsara
9 hours ago
» Replies: 16
» Views: 3,477
Building a blog in PHP [...
Forum: PHP
Last Post: Induwara Uthsara
9 hours ago
» Replies: 5
» Views: 89
Movies free Download කරන්...
Forum: The Lounge
Last Post: Induwara Uthsara
9 hours ago
» Replies: 16
» Views: 2,097
Pentesting and Red Teamin...
Forum: Other - Hacking related
Last Post: Induwara Uthsara
9 hours ago
» Replies: 4
» Views: 89
Deezer premium for free
Forum: Service Offerings
Last Post: holmantora
Yesterday, 02:27 AM
» Replies: 5
» Views: 110
Enroll Now Free: An Intro...
Forum: Other - Hacking related
Last Post: Tharanga 1999
10-15-2019, 05:32 PM
» Replies: 4
» Views: 132
Dialog Free 100mb
Forum: Other - Hacking related
Last Post: Xtizi
10-15-2019, 02:26 PM
» Replies: 13
» Views: 2,488
Pen-testing tutorial - 00...
Forum: Website & Forum Hacking
Last Post: Lord Mansara
10-14-2019, 12:07 PM
» Replies: 13
» Views: 3,245
Simple Web desing my pro...
Forum: Website Showcase & Reviews
Last Post: Zen
10-14-2019, 11:14 AM
» Replies: 6
» Views: 191

 
[-]
WF Shoutbox
Notice :
Video Pentesting and Red Teaming Explanations
Posted by: Omega - 10-16-2019, 10:10 AM - Forum: Other - Hacking related - Replies (4)

Here's 2 videos on explaining the differences between Pentesting, Red Teaming, etc and other myths about certifications such as CEH, OSCP, etc in infosec.


Part 1:



Part2:

Print this item

Lightbulb Building a blog in PHP [2nd tute] | URL routing
Posted by: ph03n1x - 10-15-2019, 12:22 PM - Forum: PHP - Replies (3)

කලින් ටියුට් එකෙන් අපි පට ගත්තා වලින් බ්ලොග් එකක් හදන්න. මේකෙන් අපි මුල්ම ස්ටෙප් එක ගැන බලන්න යන්නේ.

ඉස්සෙල්ලම මන් කරන්න යන්නේ URL routing mechanism  එක හදන්න. ඒ කියන්නෙ මේ වගේ දෙයක්.


අපි එන්ටර් කරන එක අනුව අපිට එකින් එකට වෙනස් පේජ් ඩිස්ප්ලේ වෙන්න හදන එක. උදාහරනයක් විදිහට මන්   blog-url.com/about-us  කියල එන්ටර් කරොත් බ්‍රවුසර් එකේ අපිට අපේ බ්ලොග් එකේ about-us පේජ් එක view වෙන්න ඕනේ .  blog-url.com/contact-us කියල එන්ටර් කරොත් බ්ලොග් එකේ contact-us පේජ් එක view වෙන්න ඕනේ . අපි හිතමු අපේ සයිට් එකේ ආර්ටිකල් එකක් තියෙනවා කියලා remote-command-execution නමින්. එතකොට අපි blog-url.com/remote-command-execution කියල එන්ටර් කරොත් ඒ ආර්ටිකල් එක view වෙන්න ඕනේ. Tongue

ඉතින් අපි කොහොමද මේ වගේ එකක් හදන්නේ? . එක විදිහක් තමා හැම පේජ් එකකටම php ෆයිල් එක ගානෙ හදන එක.උදාහරණයක් විදිහට , about-us කියන පේජ් එක වෙනුවට අපි about-us.php කියල ෆයිල් එකකුත් contact-us කියන පේජ් එකට අදාලව contacr-us.php කියල ෆයිල් එක්කුත් හදනවා . දැන් යූසර් about-us පේජ් එක ඉල්ලුවොත් අපි එයාව redirect කරනවා about-us.php ෆයිල් එකට. ඔයාලට තේරෙයි මේ ක්‍රමය ඒතරම් ප්‍රායෝගික නෑ කියලා. අපි හිතමු අපේ සයිට් එකේ පිටු 20 ක් තියෙනව කියලා , ඉතින් අපිට php ෆයිල් 20 ක් හදන්න වෙනවා haha . ඒක කොහොමහරි කරා කියමුකෝ. අපි සයිට් එකට ආර්ටිකල් දන්න දන්න අර්ටිකල් ආන වැඩි වෙනවා. ඒ හැම වෙලේම අපිට අලුත් php ෆයිල් එකක් හදන්න වෙනවා.

මේ ප්‍රශ්නෙට ලේසිම හා හොඳම විසඳුම තමා htacces ෆයිල් එකක් යූස් කරන එක. අපි බලමු මේක කරන්නේ කොහොමද කියලා.

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.*)$ router.php?slug=$1 [QSA,L]

මන් පැහැදිලි කරන්නම් මෙතන වෙන දේ.

RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]

ඔය කෝඩ් කොටස් දෙකෙන් වෙන්නේ යූසර් ඉල්ලන්නේ ෆයිල් එකක් හරි ෆෝල්ඩර් එකක් නම් ඒක නොර්මල් විදිහට කරන එක. උදාහරණයක් විදිහට යූසර්  sunny_leone_hot.jpg කියන ෆයිල් එක  Big Grin Big Grin ඉල්ලනවානම් අපි සාමාන්‍ය විදිහට ඒක දෙන එක.
RewriteRule ^(.*)$ router.php?slug=$1 [QSA,L]
ඔය කොටස තමා අපේ බ්ලොග් එකේ වැදගත්ම පාර්ට් එක. මේකෙන් වෙන්නෙ user request එකේ තියෙන slug කොටස router.php කියන ෆයිල්  එකට parameter එකක් විදිහට දෙන එක. උදාහරණයක් විදිහට මේ url එක ගන්නකෝ.
blog-url.com/about-us
ඔය එක අපේ blog එකට ආවම ඒකෙ "blog-url.com/" කියන කොටස ඇර ඉතුරු පාර්ට් එක (about-us) අපේ
router.php කියන file එකට යවනවා. ඇත්තටම මෙතෙන්දි වෙන්නෙ GET parameter එකක් දෙන එක.
router.php?slug=about-us
වගේ.දැන් අපිට router.php ෆයිල් එකේදි php කෝඩ් එකක් යූස් කරලා මේ parameter එක ඇරගෙන අවශ්‍ය විදිහට ඩිස්ප්ලේ එක හදාගන්න පුලුවන්. Smile අපි තව දුරටත් හිතමු යූසර් එන්ටර් කරන එක මේ වගේ කියලා.

blog-url.com/anti-debugging-techniques
මේක පේජ් එකක් නෙවෙයි එකක්. දැන් අපි කලින් වගේම ෆයිල් එකේදි අර slug කියන GET parameter එක ඇරගෙන බලනවා මේ කියන විදිහේ පෝස්ට් එකක් අපි ගාව තියෙනවද කියලා. එහෙම එකක් තියෙනවනම් අපි ඒ අදාල පෝස්ට් එක ඩිස්ප්ලේ කරනවා. නත්නම් 404 එරර් එකක් ඩිස්ප්ලේ කරනවා. Smile 

මුලින්ම අපි බලමු අපේ ෆයිල් එක හරියට වැඩ කරනවද කියලා. ඔයාලත් අර වගේ ෆයිල් එකක් හදලා අපි අර කලින් හදපු ෆෝල්ඩර් එක ඇතුලට දාන්න ඕනෙ. ඊළගට කියා ෆයිල් එකකුත් ඒ ෆෝල්ඩර් එකේම හදන්න. දැන් කියන ෆයිල් එකෙ පල්ලෙහා තියෙන කෝඩ් එක දාල ටෙස්ට් කරලා බලන්න අපේ මූලික පියවර හරිද කියලා.

<?php
$slug = $_GET['slug'];
echo $slug;  /*this code is vulnerble for xss. only for testing*/
?>

දැන්  XAMP/WAMP එක ඔන් කරලා ඔයාගෙ බ්‍රවුසර් එකෙන් ඔයා හදපු බ්ලොග් එක විසිට් කරන්න. ඔයා working folder එකට දාපු නම blog කියලා හිතුවොත් මේ  ඇඩ්‍රස් එක ගහල බලන්න. 127.0.0.1/blog/just-for-testing.

දැන් ඔයා ඔය ගහපු string එක (just-for-testing) echoවෙනවනම් මේ කරපු ස්ටෙප් එක හරියට කරලා තියෙනවා. මොකක් හරි ප්‍රශ්නයක් ආවොත් කමෙන්ට් එකක් දාන්න.


දැන් අපි බලමු අපේ ඇත්තම router.php කියන ෆයිල් එකේ php කෝඩ් එක මොන වගේ වෙන්න ඕනෙද කියලා.

මේකෙදි අපේ වෙබ් ඇප්ලිකේශන් එකේ ආරක්ශාවට අපි දේවල් ටිකක් කරන්න ඕනෙ. මුලින්ම අපි බලනවා router.php ෆයිල් එකට GET parameter එකක් දීල තියෙනවද කියලා. මොකද අපිට slug parameter එක නැතුව හරියට පේජ් එක ඩිස්ප්ලේ කරන්න බැරි හින්දා. අපිට GET parameter එක දීල නැත්නම් අපි යූසර්ව index.php එකට redirect කරල යවනවා.


if (!isset($_GET['slug'])) {
header('location:index.php');
}

උඩ පියවරෙන් පස්සෙ අපි දන්නවා slug කියන parameter එක දිල තියෙනව කියලා. දැන් අපිට ඒක ගන්න පුලුවන්.


$slug = htmlspecialchars($_GET['slug']);
$slug = trim($slug);

htmlspecialchars කියන php function එකෙන් අපේ slug parameter එකේ තියෙර්න අනවශ්‍ය කොටස් අයින් කරලා දානවා.trim function එකෙන් අපි අනවශ්‍ය ඉඩ (spaces) තියෙනවානම් ඒවත් අයින් කරල සුද්ද කරල ගන්න එක තමා කරන්නේ. ඇත්තටම අපේ යූසර් හොඳ කෙනෙක්නම් ඉතින් ඔය වගේ ෆිල්ටර් ඕනෙ වෙන්නෙ නෑ. Big Grin Big Grin
ඒත් කෝකටත් හොඳයිනේ මේ වගේ security filters යූස් කරන එක.

හරි ඊළගට බලමු අපි මේ විදිහේ කෝඩ් එකක් යූස් කරොත් මොකද වෙන්නේ.

$page = $slug . '.php';
include(pages/$page);
මේකෙන් අපිට ඕනෙ වැඩේනම් හරියටම වෙනවා. ඒත් හරියට බැලුවොත්  ඔයාලට පෙනෙයි මේක  Local file inclussion [LFI] වලට vulnerble  කියලා.

අනිත් ප්‍රශ්නෙ තමා මෙතනදි අපිට යූසර් ඉල්ලන්නෙ පේජ් එකක්ද එහෙම නැත්නම් ආර්ටිකල් එකක්ද කියන එක වෙන වෙනම හොයාගන්නත් බැරි වෙනවා. ඔය ප්‍රශ්න ඔක්කොටම විසඳුම විදිහට පල්ලෙහා තියෙන කෝඩ් එක අපිට යූස් කරන්න පුලුවන්.

$pages =  array('about-us', 'contact-us', 'members');

if (strlen($slug)>200) {
show_404();
exit();

}else if (in_array($slug, $pages)) {
show_page($slug);
exit();

}else if (get_single_post($slug)) {
show_post($slug);
exit();

}else{
show_404();
exit();
}

මුලින්ම page කියලා array එකක් හදලා අපිට ඕනෙ පේජ් ටික ඒකට දානවා. ඊළඟට  if statement ටිකක් දාල එක එක එක conditions යටතෙ ගැලපෙන විදිහට ඩිස්ප්ලේ කරනවා.

එකීදි මුලින්ම චෙක් කරන්නේ එක 200 char වලට වඩා දිගයිද කියලා. මොකද සාමන්ය යූසර් කෙනෙක් ගෙන් එච්චර දිග request එකක් එන්නෙ නෑ. Angry Angry ඒක හින්දා එහෙම ගොඩක් දිග request එකක් එනවා කියන්නෙ අපි ආයෙ ඒක චෙක් කරන්න මහන්සි වෙන්නෙ නෑ 404 එරර් එකක් ඩිස්ප්ලේ කරනවා. 

ඊළගට අපි චෙක් කරනවා යූසර් ඉල්ලන්නේ page එකක්ද කියලා. මේකට අපි යූස් කරන්නෙ in_array() කියන function එක.

හරි. යූසර්ට ඕනෙ පේජ් එකක් නෙවෙයිනම් අපි බලනවා යූසර් ඉල්ලන විදිහේ ආර්ටිකල් එකක් අපි ගාව තියෙනවද කියලා. මේකට අපි පාවිච්චි කරන්නේ get_single_post කියන function එක.

අන්තිමේට ඔය කියනවිදිහේ එකක්වත් නැත්නම් අපි 404 error එක ඩිස්ප්ලේ කරවනවා.

මේකෙදි අපි පාවිච්චි කරපු get_single_post(), show_page(),show_404() වගේ ෆන්ශන් අපි ලියන්න ඕනෙ ඒවා ඊළග ටියුට් එකෙන් මන් කියන්නම් ඒ ටික ලියලා අපේ එක කරන විදිහ. Shy

Thank you for reading. Smile Smile

Print this item

Lightbulb Building a blog in PHP [1st tute] | Introduction
Posted by: ph03n1x - 10-15-2019, 04:57 AM - Forum: PHP - Replies (5)

කොහොමද කට්ටිය. මගේ පරණ ආර්ටිකල් ටික කියවලා ඇති කියා හිතනවා.අද අලුත් ටියුට් ටිකක් ලියන්න පටන් ගන්න ඕනෙ කියලා හිතුවා, මේ ටිකෙන් මන් කියන්න යන්නෙ යූස් කරලා බ්ලොග් සයිට් එකක් හදන්නේ කොහොමද කියන එක. මගේ බ්ලොග් එකේ මන් ගොඩක් කාලයක් යූස්  කරේ Wordpress CMS කියන එක. ඇත්තටම කියන්නෙ ගොඩක් හොඳ වගේම ගොඩක් powerful sowftware එකක්. ඉතින් මට හිතුනා සරල විදිහට  CMS එකක් හදාගන්න පොඩි ට්‍රයි එකක් දෙන්න. මේ ටියුට් ටිකෙන් මන්  ලියපු code ටික open source විදිහට share කරන්න තමා යන්. කාටහරි හිතෙන්න පුලුවන් PHP source කෝඩ් එක පබ්ලිශ් කරන එකෙන් security ප්‍රශ්න ඇති වෙනවා නේද කියලා. ඇත්තටම ඒ කතාව හරි. මේක ethical community එකක් හින්දා කවුරුහරි vulnerbility/error එකක් දැක්කොත් රිපෝර්ට් පාරක් දාන්න OK Big Grin  . කැමති අය  මේ ටික follow තමන්ගෙම පොඩි බ්ලොග් එකක් හදාගන්න පුලුවන් වෙයි.ඇත්තටම මේකෙන් ඔයාලට බ්ලොග් එකක් හදනවාට වඩා තමන්ගේ PHP දැනුම වැඩි කරගන්න පුලුවන් වෙයි.

මන් කියන්නම් මන් මේකෙදි යූස් කරන ප්‍රෝග්‍රැමින් ලැන්ග්වේජ් ටික. මූලික විදිහට යූස් කරන්නෙ Object oriented PHP. තව පාවිච්චි කරනවා Javascript (With AJAX & Jquery) .ඩේටාබේස් එක විදිහට MySQL යොදාගන්නවා.


ඊළගටා මේකෙ මූලික ඩිසයින් එක ගැන කතා කරමු අපි. ඇපිට ඕනෙ වෙනවා SLQ table තුනක්. එකක් පෝස්ට් සේවු කරන්න අනික යූසර්ලගේ කමෙන්ට්ස් ටික සේවු වෙන්න අන්තිම එක ඇඩ්මින් ගේ යූසර්නේම් / පාස්වර්ඩ් සේවු කරන්න. ඇපි මේක තව දියුනු කරද්දි අපිට තව ටේබල් ඇඩ් කරන්න පුලුවන්. දැනට අපි මූලික දේවල් ටික ගැන විතරක් බලමු.

ඔයාලට මේක අත්හදා බලන්න ඕනෙ වෙන දේවල් මන් කියනම් . මුලින්ම Apache/Nginx වගේ සර්වර් එකක් ඕනෙ PHP එක්ක. ඔයා ලිනක්ස් යූසර් කෙනෙක්නම් මේ ටික තියෙනවා. වින්ඩෝව්ස් පාවිච්චි කරනවානම් XAMP හරි WAMP වගේ සොෆ්ට්වෙයාර් එකක් ඉන්ස්ටෝල් කරගන්න. ඊලගට මොකක් හරි හොඳ Text එඩිටර් එකක් තියෙනවානම් ලේසියි. මගෙනම් ඉතින් බෙස්ට් ඔප්ශන් එක sublime තමා. Smile

මුල්ම ස්ටෙප් එක විදිහට අප් අපේ working ෆෝල්ඩර් එක හදා ගනිමු. මන් උපකල්පනය කරනවා ඔයාල යූස් කරනේ Windows කියලා. එහෙමනම් XAMP instaltion directoy (Normally C:/xamp) එකට ගිහින් htdocs කියන ෆෝල්ඩර් එකේ ඔයාට කැමති නමකින් ෆෝල්ඩර් එකක් හදා ගන්න. ඇපි හිතමු ඔයා "blog" වගේ නමක් යූස් කරා කියලා. එතකොට ඔයාගෙ බ්ලොග් එකේ ඇඩ්‍රස් එක වෙන්නෙ 127.0.0.1/blog දැන්  xamp/wamp එක ඔන් කරලා ඔයාගේ බ්‍රවුසර් එකෙන් ඔය ඇඩ්‍රස් එක විසිට් කරලා බලන්න. තාම අපි මොකුත් හැදුවී නැති නිසා නිකම් Directory listing විතරක් Browser එකේ වැටෙයි.

ඊලග ටියුට් එකේ ඉඳලා මන් අපේ සිම්පල් බ්ලොග් එක හදාගෙන යන විදිහ step by step කියලා දෙන්නම්. Thanks for reading. Rolleyes

Print this item

Exclamation Deezer premium for free
Posted by: holmantora - 10-14-2019, 09:24 AM - Forum: Service Offerings - Replies (5)

Deezer premium accounts 10k free denna kalpana kala. ona aya vitharak PM akak danna. aniwarenma post akata comment karala thiyenna ona. a wagema meka nikan dena nisa aragena, aken wedak nogena enna aya ellannath apa

Print this item

  Enroll Now Free: An Intro to Cybersecurity (netacad)
Posted by: Defaltlk - 10-13-2019, 03:23 PM - Forum: Other - Hacking related - Replies (4)

හායි කට්ටිය කාලෙකින්, මේ ටිකේම වැඩ, මේ පැත්තේ එන්නත් බැරි උනා , එද්දී හිස් අතින් ආවේත් නැ, මෙක netacad එකේ ෆ්‍රි දෙන කෝස් එකක් විස්තර පල්ලෙහා ඇති. ෆ්‍රි ජොයින් වෙන්න කැමති අය පල්ලෙහා ලින්ක් එකෙන් යන්න.

* පෝල් එකට චන්දේ දීගෙනම යන්න


The introductory course for those who want to explore the growing industry of cybersecurity


With billions of devices now online, new threats pop-up every second, and the demand for cyber defenders will continue to explode.
Today’s interconnected world makes everyone more susceptible to cyber-attacks. Whether you’re attracted to the relativity new world of cybersecurity as a professional, or just interested in protecting yourself online and in social media, this introductory course is the answer. You’ll walk away with an understanding of the most common threats, attacks and vulnerability and insight about how businesses can protect their operations.

  • This course is the first step towards CCNA certification level courses

  • 100% online, self-paced and free

  • No previous experience required

  • Certificate of completion awarded at end of course
 

[Image: icon-length.png?t=1570067392]
Length: 
15 hours

[Image: icon-cost.png?t=1570067392] 
Cost: 
Free*


[Image: icon-level.png?t=1570067392]
Level: Beginning

[Image: icon-type.png?t=1570067392]
Learning Type: Online self-paced


[Image: icon-lang.png?t=1570067392]

Languages: English, Français, Español

[To see links please login or register here]

Print this item

  How does Barcodes and Barcode Scanners Work ?
Posted by: hackzero_0 - 10-11-2019, 09:55 AM - Forum: Education - No Replies

[To see links please login or register here]

?
click to this link  Smile Smile

[To see links please login or register here]

Print this item

  /Learn_English_in_sinhala_step_by_step
Posted by: hackzero_0 - 10-11-2019, 09:47 AM - Forum: Education - No Replies

English Grammar Igena Ganna Ayata..
me Link aken :---- 

[To see links please login or register here]

Print this item

Thumbs Up Instagram Adds New Tool
Posted by: s_zone - 10-10-2019, 11:26 AM - Forum: Other - No Replies

Instagram Adds New Tool to Help Users Identify Phishing Scams

[Image: shutterstock_1171276837.jpg]
Tongue 
  • The tool has been introduced following the rise in fake Instagram emails.
  • The new feature introduced by Instagram aims to verify emails sent to users.
With the proliferation of phishing scams, users with accounts on different social media sites are finding difficulty in identifying one. To combat this, the popular photo- and video-sharing social network service Instagram has introduced a new tool.

What’s the problem? Confused
The tool has been introduced following the rise in fake Instagram emails. These emails tricked users into sharing their login credentials and eventually personal details. Online users had a hard time figuring out which emails are real and which ones are fake.
Some of these phishing emails even bypassed the weak spam filters and looked very much like an original message. These made it more difficult for users to catch a scammer’s malicious attempt.

What’s new about the feature? Shy 
  • The new feature introduced by 

    [To see links please login or register here]

     aims to verify emails sent to users. The purpose of the tool is to help people identify phishing emails that claim to be from Instagram.

  • This account security feature - which can be accessed through Settings - allows anyone to check the authenticity of the email.
  • If an email claiming to be from Instagram does not appear in the Instagram Settings, then it is a phishing attempt.
Other security requirements Undecided
Awareness of possible phishing attempts is not enough. It is also necessary to enable multi-factor authentication to secure accounts on different social networking services. It is also recommended to use strong passwords and to change passwords frequently.

Print this item

  Trying to fing job in model or cinema business
Posted by: Michelehep - 10-10-2019, 05:21 AM - Forum: Other - No Replies

Hi
My name is Jenny.
I trying to find job in model or cinema business.

If you have any offers for me, please

[To see links please login or register here]


[Image: fm7sxe.jpg]


dating sim games list
bumble dating app frequently asked questions
bumble dating app phone number for free
dating simulation games for girls
plenty of fish dating site of free dating 50 plus
dating apps free 2018
riga dating app
100% completely free dating sites no hidden fees
dating my daughter walk through
dating apps uk reddit

Print this item

  Securing PHP Web Forms from CSRF Attacks - Double Submit Cookie Pattern
Posted by: Anøn LK - 10-09-2019, 03:25 PM - Forum: PHP - Replies (1)

Securing PHP Web Forms from CSRF AttacksDouble Submit Cookie Pattern

What is CSRF

Cross-Site Request Forgery (CSRF) is an attack that forces an end user to execute unwanted actions on a web application in which they're currently authenticated. CSRF attacks specifically target state-changing requests, not theft of data, since the attacker has no way to see the response to the forged request. 

With a little help of social engineering (such as sending a link via email or chat), an attacker may trick the users of a web application into executing actions of the attacker's choosing. If the victim is a normal user, a successful CSRF attack can force the user to perform state changing requests like transferring funds, changing their email address, and so forth. If the victim is an administrative account, CSRF can compromise the entire web application.(

[To see links please login or register here]

)


Read my previous post about Synchronizer Token Pattern: Securing PHP Web Forms from CSRF Attacks - Synchronizer Token Pattern

what is Double Submit Cookie Pattern

When a user authenticates to a site, the site should generate a (cryptographically strong) pseudo-random value and set it as a cookie on the user’s machine separate from the session ID. The server does not have to save this value in any way, that's why this pattern is also called Stateless CSRF Defense.


The site then requires that every transaction request include this random value as a hidden form value (or other request parameter). A cross origin attacker cannot read any data sent from the server or modify cookie values, per the same-origin policy.
In the case of this mitigation technique the job of the client is very simple, just retrieve the CSRF cookie from the response and add it into a special header to all the requests.(Image 1)

[Image: fZjf439l.jpg]
(Image 1)

The job of the server is a little more complex, create the CSRF cookie and for each request asking for a protected resource, check that the CSRF cookie and the CSRF header of the request are matching.(

[To see links please login or register here]

)(Image 2)


[Image: zHDe1JNl.jpg]
(Image 2)

Implementing CSRF Protection in PHP

In here I have implemented a PHP based money transferring application for the demonstration purpose. This application generates two CSRF tokens for the login form and the money transferring form. 

Login Form

[Image: ZkuzdqUl.jpg]
(Image 3)

This is a simple login form (login.php) with username and password (Image 3). I have hard coded the username and password as "admin":"admin". I added a token for the login form as well For greater security. if someone tries to bruteforce the login credentials, it won't work because, one token can use for a one submission. every time the form submits it checks the token and validate it.

When this page loads it will call a function named "csrf_token_gen()" in "csrf_token.php" which generates tokens.(Image 4)

[Image: p0QxkIJl.jpg]
(Image 4)

When this function(Image 5) is called it will generate a token and save it in a cookie called "csrf". Then the generated token returns to the login.php. 

[Image: kFJHJoel.jpg]
(Image 5)

The returned token is saved as a variable called "$token" which will print as a hidden input value named "csrf" inside the login form.(Image 6)

[Image: rXUPfnNl.jpg]
(Image 6)

When the user submit the form, "csrf" token will be submitted along with the username and password.(Image 7)

[Image: tBxrIOQl.jpg]
(Image 7)

The submitted data send to the "login_check.php" to validation.  First it checks the cookie "csrf" is set and assign it to a variable called "csrf" and compare it with POST csrf token to check both are equal.(Image 8)

[Image: 6jccxwal.jpg]
(Image 8)

Then check if the user entered the valid credentials and username and session id are saved as cookies and unset the csrf token cookie that used for the login submission.(Image 9)


[Image: Q9JfnUll.jpg]
(Image 9)

then the user will redirect to the "transfer.php". (Image 10)


[Image: VbntPd3l.jpg]
(Image 10)

If someone tries to submit the form with the same token, they will see the error message below (Image 11). Therefore, the user must refresh the page to regenerate another token.


[Image: izavmp6l.jpg]
(Image 11)



Money transferring form

After successful login, the user will redirect to the Money transferring form (transfer.php) (Image 12). This is also a simple form which used to transfer money (only for the demonstration purpose). To make the transaction, the user has to enter the amount and click the transfer button.

[Image: BlozYkPl.jpg]
(Image 12)


When this page loads, using the below script(Image 13), AJAX sends a POST request to "csrf_token.php" to generate the token.

[Image: 0vEWT9Vl.jpg]
(Image 13)

After receiving above request below PHP code(Image 14) checks, if it is a valid request, and call the function to generate the token.

[Image: YdkFm2Bl.jpg]
(Image 14)

"csrf_token_gen()" function(Image 15) is used to generate the token as earlier and save the token in a cookie callled "csrf" and returns the token. 

[Image: llfUvhsl.jpg]
(Image 14)

after running this function, as above java script (Image 13), it get the token from cookie that saved in the browser and it will print as a hidden input value named "csrf" inside the money transferring form.(Image 16)


[Image: FnylPZel.jpg]
(Image 16)


The submitted data send to the "transfer_check.php". As below php code(Image 17), first it checks the cookie "csrf" is set and assign it to a variable called "$csrf".

[Image: 3WSZtuRl.jpg]
(Image 17)

Then check the POST token and the "$csrf" is equal or not.  If both are equal, it will do the transaction.(Image 18)

[Image: ZfBUNzNl.jpg]
(Image 18)

if not, it will show an error message as below.(Image 19)

Print this item