Results 1 to 2 of 2

Thread: XSS Vuln. Check

  1. #1
    Join Date
    Jun 2011
    Posts
    9

    XSS Vuln. Check

    Hello WebDevForums.com members. I'm new here, and I'm also new in PHP.
    Would like to receive some help from members of this forum, and maybe some day i will get better and will be able people like i am atm
    So, i have register.php page, and i been told that it's XSS vulnerable, I know that i have to use htmlentities to prevent prevent such attacks, but i don't know what is the right way to use it in my script.
    PHP Code:
    <?
    session_start
    ();
    include 
    "header.php";
    include 
    "mysql.php";
    include 
    "config.php";
    if (isset(
    $_POST['username']) && isset($_POST['password'])) {
        
    $username trim(mysql_real_escape_string($_POST['username']));
        
    $password md5(trim(mysql_real_escape_string($_POST['password'])));
        
    $rpassword md5(trim(mysql_real_escape_string($_POST['rpassword'])));
        
    $email trim(mysql_real_escape_string($_POST['email']));
        
    $remail trim(mysql_real_escape_string($_POST['remail']));
        
    $ap trim(mysql_real_escape_string($_POST['alertpay']));
        
    $pp trim(mysql_real_escape_string($_POST['paypal']));
        
    $country trim(mysql_real_escape_string($_POST['country']));
        
    $ip $_SERVER['REMOTE_ADDR'];
        
    $date date("F j, Y, g:i a");
        if (
    $_POST['ref']) {
            
    $ref trim(mysql_real_escape_string($_POST['ref']));
        } else {
            
    $ref '';
        }
        if (!
    $username) { $error .= '<font color=red>Please Enter Username.</font><br>'; }
        if (!
    $password) { $error .= '<font color=red>Please Enter Password in Password Field.</font><br>'; }
        if (!
    $email) { $error .= '<font color=red>Please Enter E-Mail in E-Mail Field.</font><br>'; }
        if (
    $password != $rpassword) { $error .= '<font color=red>Passwords Doesn\'t Match.</font><br>'; }
        if (!
    is_valid_email($email)) { $error .= '<font color=red>Invalid E-Mail Address.</font><br>'; }
        if (
    $email != $remail) { $error .= '<font color=red>E-Mails Doesn\'t Match.</font><br>'; }
        
    $query=mysql_query("SELECT * FROM `users` WHERE username='".$username."'");
        if (
    mysql_num_rows($query)>0) { $error .= '<font color=red>Username Already In Use.</font><br>'; }
        
    $query=mysql_query("SELECT * FROM `users` WHERE email='".$email."'");
        if (
    mysql_num_rows($query)>0) { $error .= '<font color=red>E-Mail Already In Use.</font><br>'; }
        }  
        if ((
    $username) && ($password) && (!$error)) {
            
    $rand md5(rand(500010000));
            
    $query "INSERT INTO `users` VALUES('','{$username}','{$password}','0','{$email}','{$rand}','0','{$pp}','{$ap}','{$country}','{$ip}','{$ip}','{$date}','0','0','0','0','{$ref}','')";
            
    mysql_query($query);
            
    mail($email"$sitename Email Verification""Hi {$ui['username']},

    To verify your email address please visit the link below.
    $siteurl/verify.php?email=$email&code=$rand to verify your account.

    Thank you for verifying your email,
    The 
    $sitename Staff""From: $siteadmin");
    echo 
    "<center>Registration successful.<br>Please check your email for verification link.</center>";
        } else {
    require_once 
    'geoip.inc';
    $gi=geoip_open('GeoIP.dat',GEOIP_STANDARD);
    $country=geoip_country_name_by_addr($gi,$_SERVER['REMOTE_ADDR']);
    echo 
    $error."
    <form method='POST'>
    <table border=0>
      <tbody>
        <tr>
        <td>Username<font color=red>*</font></td><td><input type=text name='username' value='"
    .$_POST['username']."'></td>
        </tr><tr><td>E-Mail<font color=red>*</font></td><td><input type=text name='email' value='"
    .$_POST['email']."'></td>
        </tr><tr><td>Repeate Email<font color=red>*</font></td><td><input type=text name='remail' value='"
    .$_POST['remail']."'></td>
        </tr><tr><td>Alertpay</td><td><input type=text name='alertpay' value='"
    .$_POST['alertpay']."'></td>
        </tr><tr><td>PayPal</td><td><input type=text name='paypal' value='"
    .$_POST['paypal']."'></td>
        </tr><tr><td>Password<font color=red>*</font></td><td><input type=password name='password' value=''><br></td>
        </tr><tr><td>Repeat Password<font color=red>*</font></td><td><input type=password name='rpassword' value=''><br></td>
        </tr><tr><td>Country</td><td>"
    .$country."</td>";
        if (
    $_COOKIE['ref']) { echo "</tr><tr><td>Referrer</td><td>".$_COOKIE['ref']."</td><input type=hidden name=ref value='".$_COOKIE['ref']."'>"; }
        echo 
    "
        </tr>
      </tbody>
    </table>
    <input type=hidden name=country value='"
    .$country."'>
    <input type=submit value=Submit>
    </form>
    "
    ;
    }
    include 
    "side.php";
    include 
    "footer.php";
    ?>
    This is the register.php page
    So which is the best way to actually prevent XSS attacks on this kind of page? just add htmlentities() to each variable in the beginning or there is some other way?
    I also created function
    PHP Code:
    function InputCheck ($input) {
        
    $html htmlentities($input);
        if ( !
    preg_match("/^[A-Za-z0-9@.-_]+$/i"$html) ) {
            return 
    false;
        }
        return 
    true;

    As you can see it checks does script have any other symbols except A-Z, a-z, 0-9, @, ., -, _
    Seems that the function actually works and doesn't allow to process any field with symbols like < or > or " or what ever else there is... but how to implement this function into my register.php page?
    So could you give me some suggestions about XSS vuln. fixes?
    Thank you.

  2. #2
    Join Date
    Jun 2011
    Posts
    9
    Anybody, please?

Similar Threads

  1. Check Me Out Please?!?!
    By oneleftfordead in forum Website Design Reviews
    Replies: 1
    Last Post: 14 Apr 2007, 01:22 PM
  2. GooglePageRanking.info - Check your page ranking a completely free tool to check GPR
    By gpranking in forum Search Engine Optimization and Marketing
    Replies: 1
    Last Post: 17 Feb 2006, 05:59 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •