Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.0 > vBulletin 3.0 Full Releases
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
HTTP Authentication by User / pass / ip ranges Details »»
HTTP Authentication by User / pass / ip ranges
Version: 1.00, by miz miz is offline
Developer Last Online: Sep 2005 Show Printable Version Email this Page

Version: 3.0.0 Rating:
Released: 04-15-2004 Last Update: Never Installs: 12
 
No support by the author.

ok , this is the first hack i post around here so i hope im doing it ok
if not mods please fix me :P
ok, this hack is ment for closed comunity of vbulltien forums that want exstra security against unwelcome guests

this hack adds HTTP Authentication which change acording to username / password

to make the security bit higher i added ip ranges part - mean every users got ip range and if his ip is not wellcome then its not let him in
(can help abit against shared account).

ok so lets start

// run this db query
PHP Code:
ALTER TABLE user ADD ipmasks varchar(250NOT NULL default ''
// open the file admincp/user.php

find :
PHP Code:
print_input_row($vbphrase['email'], 'user[email]'$user['email'], 0); 
below it add :
PHP Code:
print_input_row('ip masks''user[ipmasks]'$user['ipmasks'], 0); 
save the file and upload it back to your server

ok, now u got 2 options :
option1 - put it only in root dir
option2 - put itin root and on admincp/modcp dir

ok
if option 1 then
// open root/global.php

find :
PHP Code:
require_once('./includes/init.php'); 
Below it add :
PHP Code:
//HTACCESS Hack + IP restriction
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    
header('WWW-Authenticate: Basic realm="Restricted area"');
    
header("HTTP/1.0 401 Unauthorized");
    echo 
"Unauthorized login attempts are logged.\n";
    echo 
"bla";
    exit;
} else {
    
//checking database
    
$userinf=$DB_site->query_first("SELECT user.password,user.userid,user.salt FROM user WHERE username='$_SERVER[PHP_AUTH_USER]'");
    
$isvalidip=0;
    if(
$userinf['userid']){
        
// if user exists check if ip is valid $REMOTE_ADDR
        
$validip=$DB_site->query_first("SELECT ipmasks FROM user WHERE userid='$userinf[userid]'");
        
$validip=explode(" ",$validip['ipmasks']);
        foreach(
$validip as $testip){
            if (
$testip=='') { continue; }
            if (
strstr($REMOTE_ADDR,$testip)==$REMOTE_ADDR || stristr(gethostbyaddr($REMOTE_ADDR),$testip)==$testip){
                
$isvalidip=1;
                break;
            }
        }
    }
    
//checking if the user login is ok & that he connects from a valid ip
    
        
$salt $userinf['salt'];
        
$pass $userinf['password'];
        
$userp md5(md5($_SERVER['PHP_AUTH_PW']) . $salt);
        
    

        
    if (
$pass != $userp) {
        
//we have a looser:)
        
header('WWW-Authenticate: Basic realm="Restricted area"'); 
        
header('HTTP/1.0 401 Unauthorized'); 
        echo 
"Unauthorized login attempts are logged.\n";
        exit;
    }elseif(!
$isvalidip){
        
header('HTTP/1.0 401 Unauthorized'); 
        echo 
"Your Ip is not allowed here...Unauthorized login attempts are logged.\n";
        exit;
    }
}
//HTACCESS Hack + IP restriction (end) 
save the file and upload it back to your server

now if u want option 2 then :

open includes/init.php

find :
PHP Code:
    $DB_site->connect($servername$dbusername$dbpassword$usepconnect); 
Below it add :

PHP Code:
//HTACCESS Hack + IP restriction
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    
header('WWW-Authenticate: Basic realm="Restricted area"');
    
header("HTTP/1.0 401 Unauthorized");
    echo 
"Unauthorized login attempts are logged.\n";
    echo 
"bla";
    exit;
} else {
    
//checking database
    
$userinf=$DB_site->query_first("SELECT user.password,user.userid,user.salt FROM user WHERE username='$_SERVER[PHP_AUTH_USER]'");
    
$isvalidip=0;
    if(
$userinf['userid']){
        
// if user exists check if ip is valid $REMOTE_ADDR
        
$validip=$DB_site->query_first("SELECT ipmasks FROM user WHERE userid='$userinf[userid]'");
        
$validip=explode(" ",$validip['ipmasks']);
        foreach(
$validip as $testip){
            if (
$testip=='') { continue; }
            if (
strstr($REMOTE_ADDR,$testip)==$REMOTE_ADDR || stristr(gethostbyaddr($REMOTE_ADDR),$testip)==$testip){
                
$isvalidip=1;
                break;
            }
        }
    }
    
//checking if the user login is ok & that he connects from a valid ip
    
        
$salt $userinf['salt'];
        
$pass $userinf['password'];
        
$userp md5(md5($_SERVER['PHP_AUTH_PW']) . $salt);
        
    

        
    if (
$pass != $userp) {
        
//we have a looser:)
        
header('WWW-Authenticate: Basic realm="Restricted area"'); 
        
header('HTTP/1.0 401 Unauthorized'); 
        echo 
"Unauthorized login attempts are logged.\n";
        exit;
    }elseif(!
$isvalidip){
        
header('HTTP/1.0 401 Unauthorized'); 
        echo 
"Your Ip is not allowed here...Unauthorized login attempts are logged.\n";
        exit;
    }
}
//HTACCESS Hack + IP restriction (end) 
thats all

*WARNING - IN ANY WAY DONT USE BOTH OPTIONS
its will cuse to the page ask for several time the user/pass
and its will be very buggy.

note :
if user got dynamic ips for exsample :

143.229.64.58
143.229.78.99
145.88.45.68

just add it like that
143.229 145.88
with 1 space between each ip range
dont user * as wildcard.

thats all :P
if u got some qustions or anything , then im here to suport u guys.

Sorry for my very bad english.

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #22  
Old 08-05-2004, 01:43 PM
bloodcult bloodcult is offline
 
Join Date: Apr 2003
Location: Hameln/Germany
Posts: 20
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i tried by myself, no result's at the moment... so anybody else will have a look for it?
Reply With Quote
  #23  
Old 08-25-2004, 09:49 AM
Isaiah33 Isaiah33 is offline
 
Join Date: Aug 2004
Posts: 16
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

anyone would be nice if it auto log into forum also
Reply With Quote
  #24  
Old 08-26-2004, 04:36 AM
Wential Wential is offline
 
Join Date: Aug 2004
Posts: 85
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You know what would be nice? A hack that checks the 1st IP # of the visiting user (Ex: 233.x.x.x) against the registration ip on file in the User database. This would require no inputing of data on the admins part. If it doesn't match, it kicks them out.
Reply With Quote
  #25  
Old 09-06-2004, 11:20 PM
miz miz is offline
 
Join Date: Mar 2003
Posts: 416
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Wential
You know what would be nice? A hack that checks the 1st IP # of the visiting user (Ex: 233.x.x.x) against the registration ip on file in the User database. This would require no inputing of data on the admins part. If it doesn't match, it kicks them out.

im sorry for not supporting this thread my linicence removed but its back now
ok so about the qoute , what if user changes his compeny ? or user have diff ip masks for exsample in israel netvision got something like 4 diff ip masks


Quote:
Originally Posted by bloodcult
nice hack, it's possible that the user logged in when they autenticate with this method?
you mean like when users put his user/pass on the http auth then its auto login him to forums ? well if the answer is yes then its not should be a problem just add query that will run login.php with username + password

note : dont use get methood cuse then you will have a major security problem

but if you want i think i can make your life bit more easy and do it for you
Reply With Quote
  #26  
Old 10-23-2004, 07:19 PM
Rodrigo Rodrigo is offline
 
Join Date: Aug 2003
Posts: 4
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

you can also use hostmasks... like if the users hostmask ends with aol.com, you can also type this in the ipmasks field...
Reply With Quote
  #27  
Old 02-09-2005, 11:53 PM
Crank Crank is offline
 
Join Date: Jan 2004
Posts: 59
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

any more support for this thread?
Reply With Quote
  #28  
Old 02-11-2005, 06:35 PM
VriendP VriendP is offline
 
Join Date: Feb 2003
Posts: 3
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I hope so.

I also have another question about it. Suppose I had installed it partially (just added the ipmasks field), and I wanted to autofill this with the ip-information from the post table.

Such a thing would take time... so I figure a script to do this would be nice also.
Reply With Quote
  #29  
Old 08-31-2005, 06:54 PM
RDog14 RDog14 is offline
 
Join Date: Aug 2005
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I placed TripLcixx's code in the global.php file... I get the authentication box, but it will not accept any username/password combination, any suggestions would be greatly appreciated.

Also,
Anything new with being able to auto-login? That would be great, but is a little above my head to develope right now.

Thanks
Reply With Quote
  #30  
Old 09-18-2005, 06:00 AM
Inferno Dragon's Avatar
Inferno Dragon Inferno Dragon is offline
 
Join Date: Sep 2005
Location: United Kingdom
Posts: 153
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

can I use this hack to password protect a any individual directory within my forum for example: forums/songs ?
Reply With Quote
  #31  
Old 03-12-2006, 06:44 PM
sybakaos sybakaos is offline
 
Join Date: Mar 2006
Posts: 78
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

How do I redirect users instead of showing them the standard "Authentication Failed" message? (I'm using the shorter version of TripLcixx)?

Thanks!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 09:40 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.06690 seconds
  • Memory Usage 2,349KB
  • Queries Executed 25 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (7)bbcode_php
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (3)pagenav_pagelink
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete