২১

Re: Case Sensitive Password

obakfahad লিখেছেন:

    $qry="SELECT * FROM member WHERE username='$username' AND password='$password'";

Log-In বাটনে username এবং password একসাথে match না করানোই ভালো।
আপনার কোডটি SQL Injection এর খপ্পরে পড়বে।
তাই SQL দিয়ে শুধু username টা match করান। তারপর php কোডে password match করান।

২২ সর্বশেষ সম্পাদনা করেছেন invarbrass (৩০-০৪-২০১৩ ১০:২১)

Re: Case Sensitive Password

ভালোবাসার কোড লিখেছেন:

Log-In বাটনে username এবং password একসাথে match না করানোই ভালো।
আপনার কোডটি SQL Injection এর খপ্পরে পড়বে।
তাই SQL দিয়ে শুধু username টা match করান। তারপর php কোডে password match করান।

উনার কোড কুয়েরী করার আগে ডেটা স্যানিটাইযেশন করছে ( clean() ) তবে উনি যেভাবে নিজের হাতে কুয়েরী তৈরী করছেন, শুধু ইউজারনেম দিয়ে কুয়েরী করলেও ইনজক্ট করানোর সম্ভাবনা থেকে যায়।

@অবাক ভাই: আপনি সম্ভবত: পুরনো কোনো টিউটোরিয়াল ফলো করছেন। এই যুগে এখন আর কেউ সরাসরি mysql_***() এপিআই ব্যবহার করে না। আপনি PDO-তে মাইগ্রেট করুন। সিকল এ্যাটাক থেকে বাঁচতে প্রিপেয়ারড কুয়েরী ও প্যারামীটার বাইন্ডিং পদ্ধতি অবলম্বন করুন।
আপনার জন্য কিছু লিংকঃ
http://www.netmagazine.com/tutorials/us … ta-objects
http://net.tutsplus.com/tutorials/php/w … se-access/
http://wiki.hashphp.org/PDO_Tutorial_fo … Developers
http://www.phpro.org/tutorials/Introduc … P-PDO.html
http://www.phpeveryday.com/articles/PHP … -P842.html
http://www.virtualsecrets.com/pdo-encry … m-php.html

Calm... like a bomb.

২৩

Re: Case Sensitive Password

invarbrass লিখেছেন:
ভালোবাসার কোড লিখেছেন:

Log-In বাটনে username এবং password একসাথে match না করানোই ভালো।
আপনার কোডটি SQL Injection এর খপ্পরে পড়বে।
তাই SQL দিয়ে শুধু username টা match করান। তারপর php কোডে password match করান।

উনার কোড কুয়েরী করার আগে ডেটা স্যানিটাইযেশন করছে ( clean() ) তবে উনি যেভাবে নিজের হাতে কুয়েরী তৈরী করছেন, শুধু ইউজারনেম দিয়ে কুয়েরী করলেও ইনজক্ট করানোর সম্ভাবনা থেকে যায়।

@অবাক ভাই: আপনি সম্ভবত: পুরনো কোনো টিউটোরিয়াল ফলো করছেন। এই যুগে এখন আর কেউ সরাসরি mysql_***() এপিআই ব্যবহার করে না। আপনি PDO-তে মাইগ্রেট করুন। সিকল এ্যাটাক থেকে বাঁচতে প্রিপেয়ারড কুয়েরী ও প্যারামীটার বাইন্ডিং পদ্ধতি অবলম্বন করুন।
আপনার জন্য কিছু লিংকঃ
http://www.netmagazine.com/tutorials/us … ta-objects
http://net.tutsplus.com/tutorials/php/w … se-access/
http://wiki.hashphp.org/PDO_Tutorial_fo … Developers
http://www.phpro.org/tutorials/Introduc … P-PDO.html
http://www.phpeveryday.com/articles/PHP … -P842.html
http://www.virtualsecrets.com/pdo-encry … m-php.html

ভাই আমি যতটা সম্ভব সার্চ করেছি । কিছু কিছু যায়গায় পেয়েছি , চেষ্টার পর দেখেছি কাজ করছে । তাই ওটা নিয়েই শুরু করেছি । এখান থেকে কিছু , ওখান থেকে কিছু ।
লিংক গুলো আশা করি আমার খুব কাজের হবে । আমি জাস্ট জানতে চাচ্ছি , আমি যদি PDO ব্যাবহার করতে চাই আমার কি কি পরিবর্তন করতে হবে এখান থেকে ?

  <?php
    //Start session
    session_start();
     
    //Include database connection details
    require_once('dbcon.php');
     
    //Array to store validation errors
    $errmsg_arr = array();
     
    //Validation error flag
    $errflag = false;
     
    //Function to sanitize values received from the form. Prevents SQL injection
    function clean($str) {
    $str = @trim($str);
    if(get_magic_quotes_gpc()) {
    $str = stripslashes($str);
    }
    return mysql_real_escape_string($str);
    }
     
    //Sanitize the POST values
    $username = clean($_POST['username']);
    $password = clean($_POST['password']);
     
    //Input Validations
    if($username == '') {
    $errmsg_arr[] = 'Username missing';
    $errflag = true;
    }
    if($password == '') {
    $errmsg_arr[] = 'Password missing';
    $errflag = true;
    }
     
    //If there are input validations, redirect back to the login form
    if($errflag) {
    $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
    session_write_close();
    header("location: login.php");
    exit();
    }
     
    //Create query
    $qry="SELECT * FROM member WHERE username='$username' AND password='$password'";
    $result=mysql_query($qry);
     
    //Check whether the query was successful or not
    if($result) {
    if(mysql_num_rows($result) > 0) {
    //Login Successful
    session_regenerate_id();
    $member = mysql_fetch_assoc($result);
    $_SESSION['SESS_MEMBER_ID'] = $member['mem_id'];
    $_SESSION['SESS_FIRST_NAME'] = $member['username'];
    $_SESSION['SESS_LAST_NAME'] = $member['password'];
    session_write_close();
    header("location: index.php");
    exit();
    }else {
    //Login failed
    $errmsg_arr[] = '<div class="alert alert-error">user name and password not found</div>';
    $errflag = true;
    if($errflag) {
    $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
    session_write_close();
    header("location: login.php");
    exit();
    }
    }
    }else {
    die("Query failed");
    }
    ?>
সত্যি বলতে ভয় পাওয়াটা আমাকে জয় করতেই হবে !!!

লেখাটি GPL v3 এর অধীনে প্রকাশিত

২৪ সর্বশেষ সম্পাদনা করেছেন invarbrass (৩০-০৪-২০১৩ ১৮:৪২)

Re: Case Sensitive Password

obakfahad লিখেছেন:

লিংক গুলো আশা করি আমার খুব কাজের হবে । আমি জাস্ট জানতে চাচ্ছি , আমি যদি PDO ব্যাবহার করতে চাই আমার কি কি পরিবর্তন করতে হবে এখান থেকে ?

$dbh = new PDO("mysql:host=db_hostname;dbname=database_name", $db_username, $db_password);

$statement = $dbh->prepare("SELECT * FROM member WHERE username=:userName");
$statement->bindParam(':userName', $username, PDO::PARAM_STR);
$statement->setFetchMode(PDO::FETCH_ASSOC);
$statement->execute();
$result = $statement->fetch();
if ($result != null) {
    $password = $result['password'];
}

...
Calm... like a bomb.

২৫

Re: Case Sensitive Password

invarbrass লিখেছেন:
obakfahad লিখেছেন:

লিংক গুলো আশা করি আমার খুব কাজের হবে । আমি জাস্ট জানতে চাচ্ছি , আমি যদি PDO ব্যাবহার করতে চাই আমার কি কি পরিবর্তন করতে হবে এখান থেকে ?

$dbh = new PDO("mysql:host=db_hostname;dbname=database_name", $db_username, $db_password);

$statement = $dbh->prepare("SELECT * FROM member WHERE username=:userName");
$statement->bindParam(':userName', $username, PDO::PARAM_STR);
$statement->setFetchMode(PDO::FETCH_ASSOC);
$statement->execute();
$result = $statement->fetch();
if ($result != null) {
    $password = $result['password'];
}

...

যদি একটু কনভার্ট করে দিতেন আমার কোড টা ....

সত্যি বলতে ভয় পাওয়াটা আমাকে জয় করতেই হবে !!!

লেখাটি GPL v3 এর অধীনে প্রকাশিত

২৬ সর্বশেষ সম্পাদনা করেছেন সাইফুল_বিডি (৩০-০৪-২০১৩ ২০:৪৬)

Re: Case Sensitive Password

$hash=md5(md5(base64_encode($pass)));

এই টাইপের হ্যাস দিতে পারেন , ডিকোড করতে জান বেরিয়ে যাবে (ক্লাউড ছাড়া)।
কুয়েরি করবেন এভাবে

<?php
$password=md5(md5(base64_encode($password)));
$qry="SELECT * FROM member WHERE username='$username' AND password='$password'";
?>

আর ইন্সারট এর সময় $password=md5(md5(base64_encode($password))); এটা দিয়ে পাস এর হ্যাস জেনারেট করে ইন্সারট করবেন।

এই ব্যাক্তির সকল লেখা কাল্পনিক , জীবিত অথবা মৃত কারো সাথে মিল পাওয়া গেলে তা সম্পুর্ন কাকতালীয়, যদি লেখা জীবিত অথবা মৃত কারো সাথে মিলে যায় তার দায় এই আইডির মালিক কোনক্রমেই বহন করবেন না। এই ব্যক্তির সকল লেখা পাগলের প্রলাপের ন্যায় এই লেখা কোন প্রকার মতপ্রকাশ অথবা রেফারেন্স হিসাবে ব্যবহার করা যাবে না।

২৭

Re: Case Sensitive Password

.htaccess দিয়ে ফাইল ও ফোল্ডার লক করা যায় । ওটা করলে কেমন সিকিউরড হয় ?? আর আমি যদি login.php ফাইলটা কে "order allowdeny deny all " করি তাহলে কি ইন্জেকশন এর ভয় আছে ?

সত্যি বলতে ভয় পাওয়াটা আমাকে জয় করতেই হবে !!!

লেখাটি GPL v3 এর অধীনে প্রকাশিত