Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 03-03-2006, 04:31 AM
Lea Verou Lea Verou is offline
 
Join Date: Jul 2005
Location: Greece
Posts: 1,856
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Is it secure/safe?

I'm developing a website for a client, it has nothing to do with vBulletin.
There is only one admin account in the system. (Users do not register)
Obviously I needed to make a system for her to login, and then keep her logged in while she browses the admincp and adds stuff to her website. I read that most php applications do this with sessions and cookies, but I did not have a knowledge on either of them, and I didn't like the fact that you can only call setcookie before sending any html. Also, sessions seemed too complicated for me to understand, and I have to finish the site until about 15th of March, so I can't waste any more time.
So, this is what I did:
When she installs the software, she enters her preffered admin username and password. These are stored in the database (btw should I encrypt the password? If so, why?). There are also 2 other entries in that db table, islogged and adminip. By default they are both set to 0. When she logs in, the script gets the correct username and password from the database, compares them with the submitted ones, and if they match it sets islogged to 1 and adminip to the computer's IP from which she logged in. In every page in the admincp I include (require() in fact) a small script that checks if islogged is 1 AND adminip matches the computer's ip. If not, it redirects the user to the login page by header(location: blah blah blah); . There is also a logout that sets islogged to 0 and adminip to 0. There is no timeout (but eventually the IP will change if it's not static) and the good thing (compared to cookies) is that it doesn't need a second login if you view the site with a different browser (as it doesn't depend on the browser's cookies).

My question is (and thank you for reading the whole thing! ):
Since I haven't heard of this way for logins, there must be a reason for that. Does it pose a security risk? How can it be bypassed?

Thanks a lot in advance!
Reply With Quote
  #2  
Old 03-03-2006, 10:26 PM
Xenon's Avatar
Xenon Xenon is offline
 
Join Date: Oct 2001
Location: Bavaria
Posts: 12,878
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yep, it holds a big security risk:

as long as she doesn't log out, any user with the same external IP will ahve access. for example if she works behind a router, everyone behind the same router will have access.
also if she forgets to log out, and her ip will change, the old ip (if it's dynamical could be assigned to someone else who will get access)

and yes, you should encrypt the password. if there is any security flaw and someone gets access to the db he can read the pw and then knows it forever, and if she doesn't have different password, that won't be good
Reply With Quote
  #3  
Old 03-03-2006, 11:21 PM
Lea Verou Lea Verou is offline
 
Join Date: Jul 2005
Location: Greece
Posts: 1,856
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Firstly thanks a lot for answering!!

She will probably use it from her house, where only she and her husband live.
Also, I think it's quite an exaggeration to say that when her IP changes, the other one who takes her IP will be able to enter. To do that he should:
-Know her site
-Know her IP
-Know that he got HER IP
-Know the URL of the admincp
-want to harm the site

Quite impossible, isn't it?

About the password, although it also seems quote exaggerated, I will try to encrypt it as it won't be a big change in the code
Reply With Quote
  #4  
Old 03-03-2006, 11:50 PM
Xenon's Avatar
Xenon Xenon is offline
 
Join Date: Oct 2001
Location: Bavaria
Posts: 12,878
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

well, you just asked for security aspects, not if it's likely

but why coding insecure, if you can do it secure
(just add a cookie on her pc and add a timeout, will make it much more secure without much work )
Reply With Quote
  #5  
Old 03-04-2006, 12:39 AM
Lea Verou Lea Verou is offline
 
Join Date: Jul 2005
Location: Greece
Posts: 1,856
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yes but I don't know how to use cookies and it seemed quite complicated when I tried to learn it (cause it said that you have to set the cookie before sending any html and I didn't find any function to manipulate the value of the cookie afterwards, so this is impossible with my code)
Reply With Quote
  #6  
Old 03-04-2006, 02:23 AM
Andrew's Avatar
Andrew Andrew is offline
 
Join Date: Nov 2004
Location: Pennsylvania
Posts: 441
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You could always use sessions - I find them much easier to use that dealing with cookies directly.
Reply With Quote
  #7  
Old 03-04-2006, 06:21 AM
Lea Verou Lea Verou is offline
 
Join Date: Jul 2005
Location: Greece
Posts: 1,856
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I said in the first post that I did this because I don't know how to use sessions and cookies and I find it hard to learn it while being in pressure!
Reply With Quote
  #8  
Old 03-04-2006, 11:57 AM
Xenon's Avatar
Xenon Xenon is offline
 
Join Date: Oct 2001
Location: Bavaria
Posts: 12,878
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

you have to send the cookies before you send the first part of html output of a pgae, but not before the scipr itself starts, you can already do some test

to give you the general idea

she visits the site
check if admin cookie is set
not set: redirect to login page
if login is correct set cookie and afterwards redirect to the admin index page

it's not hard, believe me
Reply With Quote
  #9  
Old 03-04-2006, 12:01 PM
Lea Verou Lea Verou is offline
 
Join Date: Jul 2005
Location: Greece
Posts: 1,856
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yes, but the way I have it now there is the login form, and when she clicks submit the form stays there and the results appear below it (eg "incorrect password"). I have to change a lot of things to use cookies and if the only security risks are the ones mentioned in the 2nd post I don't think there is a reason :ermm:
Reply With Quote
  #10  
Old 03-04-2006, 03:44 PM
Xenon's Avatar
Xenon Xenon is offline
 
Join Date: Oct 2001
Location: Bavaria
Posts: 12,878
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

it's your customer, not mine
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:29 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04439 seconds
  • Memory Usage 2,254KB
  • Queries Executed 13 (?)
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
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)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_postinfo_query
  • fetch_postinfo
  • 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