Re: Passing URL parameters, how to hide

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



BTW u might expose n get ur database hacked if u dont do some sort of
validation while using the ID from the URI parameter !!!!

example: http://domain/?show=records&id=4

if someone changes id to 4;use mysql; update user set
password=md5("hello") where user='root';

imagine wat would happen??? ur mySQL root password is changed

u should always avoid or protect urself....
one way is to keep "--" after ur db queries because MySQL takes "--"
as comment so it will remark the rest of the queries.

1-always check for the datatype as well use the === instead of == to
check if the data type holds or now when ur comparing or use is_int,
is_string,....n the rest ....
2-always check if the parameter ur getting is of the same type u have
in ur database
3-Try to convert or trancate the datatype to the one u need check
against in ur DB
for example:
$recordID=is_int($_GET['id'])?$_GET['id']:-1;

4-Never expose ur column names, fieled names, or table names!! Never
5-Always protect ur DB queries by ur own error-handling and never show
DB errors on ur pages... it exposes alot of data about ur database!

I think ur problem is that u started coding before thinking of a logic
n drawing ur algorithm... while it's simple, lack of these plannings
makes ur work harder.

On Tue, 21 Sep 2004 05:29:30 +0400, M Saleh EG <m.saleh.eg@xxxxxxxxx> wrote:
> You should always avoid passing Record IDs through URL parameters.
> Use form Hidden fields instead!
> 
> In your case, when ur selecting the users form data from the record
> check if it's the same user if not then if he tries to change the ID
> from the URI Parameter just block it. Or u better MD5 every logged in
> user's record ID and hold it in ur sessions then check against it and
> show the proper form or just show an error page or a page saying
> Access Denied! .
> 
> I personaly dont recommand using url parameters for passing record
> ids, i'd rather use hidden inputs, sessions, or even cookies but never
> URI querystrings for record ids.
> 
> Better use of URI querystrings would be for logic, section, category,
> decision, options rather than important data such as ur table primary
> keys!
> 
> Hope this is useful.
> 
> 
> 
> 
> On Mon, 20 Sep 2004 15:32:07 -0700, Jasper Howard <jasper@xxxxxxxxxxxxx> wrote:
> > When I created a business management script for the business I work for, it
> > was important that ids in url's were encrypted. What I did was create a code
> > for each item that needed one. My encryption table fields looked something
> > like: enc_id, encryption, table, id where enc_id was the unique identifier
> > in this table, encryption was the 14 character code, table was the table
> > that the encrypted data was stored in, and id was the id of the encrypted
> > data. That was you can pass the 14 digit code in the html, then when you
> > need to use it in a php script you can just make a function that returns the
> > data from the database from the encryption code. For extra security (since
> > someone could just remember the encryption code) I added a cron job script
> > that changed the encryptions every midnight. If anyone thinks something like
> > this would work for them, some thing to remember is that you need to make
> > sure that when you add an item to the encryption table in the db that each
> > code is unique.
> >
> > --
> >
> > -------------------------------------------------------------->>
> > Jasper Howard :: Database Administration
> > ApexEleven Web Design
> > 1.530.559.0107
> > http://www.ApexEleven.com/
> > <<--------------------------------------------------------------
> > "Stuart Felenstein" <stuart4m@xxxxxxxxx> wrote in message
> > news:20040920221627.4201.qmail@xxxxxxxxxxxxxxxxxxxxxxxxxx
> >
> >
> > > I'm restarting this post.  I thought I was out of the
> > > woods, but not.
> > > Here situation, in most of my update forms which
> > > involve 1 record, passing a session variable , usually
> > > the users ID is enough. No URL param passing.
> > >
> > > Not so in two update forms I have where there are
> > > multiple records for each user.  If I pass a session
> > > variable it only brings up the first record.  So
> > > unless I am missing something, I must pass the record
> > > ID via a URL parameter.  That works just great, but
> > > the problems lies in the fact, that all anyone would
> > > need to do is change recordID=1 to recordID=2 and they
> > > can see someone elses record, which is supposed to
> > > confidential.
> > >
> > > Now I've looked at sights like Monster, Amazon, Ebay,
> > > and tried changing the recordID in the URL area, but
> > > it either ignores my change or kicked back an invalid
> > > ID.
> > > This is even if I remove the other ID's from the line.
> > >
> > >
> > > So, I'm sure this has been dealt with more, I don't
> > > have the foggiest clue yet though how I can implement
> > > something that either hides, or prevents a user from
> > > going through records in the database by changing the
> > > id number.
> > >
> > > Appreciate any suggestions or ideas.
> > >
> > > Thank you,
> > > Stuart
> > >
> > >
> > >
> > >
> > >
> > > --- Stuart Felenstein <stuart4m@xxxxxxxxx> wrote:
> > >
> > > > Turned out "hiding" the id wasn't necessary as the
> > > > awaiting update page can grab the session ID.
> > > > I wasn't thinking. Sorry
> > > > Stuart
> > > > --- John Holmes <holmes072000@xxxxxxxxxxx> wrote:
> > > >
> > > > > Stuart Felenstein wrote:
> > > > > > I'm still confused over one aspect of URL
> > > > > parameters.
> > > > > > As far as a form passing data back to the
> > > > server,
> > > > > I
> > > > > > understand about get, post and replace.
> > > > > >
> > > > > > Here is my problem.
> > > > > > I have an update form.  User is logged in to the
> > > > > > system and needs to update whatever information.
> > > > > > Right now I'm including in the link the user's
> > > > ID,
> > > > > so
> > > > > > when they arrive at the update page, their
> > > > record
> > > > > will
> > > > > > be displayed.
> > > > > > The problem is all one has to do is change the
> > > > ID
> > > > > > number in the URL parameter in the update page
> > > > and
> > > > > you
> > > > > > can go to someone else's record.
> > > > > >
> > > > > > How do programmers generally get around this ? I
> > > > > must
> > > > > > be missing something.
> > > > >
> > > > > How do you identify the user once they are logged
> > > > > in? There should be
> > > > > some way to relate the logged in user to valid
> > > > > records they can see.
> > > > > Then, if they request an invalid record, you can
> > > > > show them an error
> > > > > page. Hiding the ID isn't going to fix anything.
> > > > >
> > > > > --
> > > > >
> > > > > ---John Holmes...
> > > > >
> > > > > Amazon Wishlist:
> > > > > www.amazon.com/o/registry/3BEXC84AB3A5E/
> > > > >
> > > > > php|architect: The Magazine for PHP Professionals
> > > > -
> > > > > www.phparch.com
> > > > >
> > > > >
> > > > >
> > > >
> > > > --
> > > > PHP Database Mailing List (http://www.php.net/)
> > > > To unsubscribe, visit: http://www.php.net/unsub.php
> > > >
> > > >
> >
> > --
> > PHP Database Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
>

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux