gdp wrote:
> Hi...
>
> I have to allow access for administrators to sections of my website which
> contain sensitive data. Ther is a link on the homepage called "Admin
> Login". They are asked for a PIN number which is a randon four letter four
> number combo and if they get that correct then have to enter their personal
> username and password.
>
> The text field inputs are cleaned before being used to make up dynamic SQL
> by replacing all apostrophes with the below function
>
> function clean(clean_this)
> clean=trim(replace(clean_this,"'","''"))
> end function
>
>
> Is this all safe....I am slightly uneasy about having the login on the
> website and it could be hidden in a special link only given to admins - but
> this is the same mechanism that ebay and amazon etc rely on to let people
> log in....
One additional security measure against SQL injection is to check that
the username and password exist once you've pulled out the user record.
For example, to see if user is valid:
SELECT * FROM users WHERE user_name='myname' AND user_pw='mypassword'
Run this to pull out a recordset. First step is to check the recordcount
is 1, i.e. you have found the record (user exists).
But then you should check the username and password you pulled out with
this query against the ones entered by the user.
For example
If rs("user_name")<>"myname" OR rs("user_pw")<>"mypassword" then
response.redirect("error.asp")
End if
Even if you didn't use your clean function and someone codes an
injection attack to return a record, the username and password pulled
out won't match what they entered (because they entered SQL code, not a
username/password) and they'll get bounced to your error page.
--
(remove Tony Blair from office to contact me)