Re: storing single and double quote in MySQL

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

 



if magic_quotes_gpc is On, does it add slashes in front of quotes when
submit through form?
Mean, if I submit in input form (text) afan's "crazy" web, after
echo $_POST['record'];
I'll get afan\'s \"crazy\" web. Is this because of magic_quote_gps is On?

-afan


> Security wise, it is best to turn it off...
> Yes, you *might* have to redo code if you turn it off...
> (Of course in future versions you will not be able to turn it on, so
> code migration might be better now then later)
>
> Your options are:
> - turn it off, see what breaks and fix it.
> - or use the stripslashes() function on all $_POST, session and cookie
> variables *before* you use the mysql_real_escape_string() function.  You
> only really need to do such things when that data is going into the
> database!  So any control variables passed via get, post, etc.. do not
> need to be cleaned up, just use as they are.
>
> -Brad
>
> afan@xxxxxxxx wrote:
>
>>yes. it's *On*
>>
>>if I turn it Off - I have to redo a lot of code, then right?
>>
>>What would be the best solution (and few options too :))?
>>
>>-afan
>>
>>
>>
>>
>>>in your php.ini file what is the value of:
>>>magic_quotes_gpc?
>>>(hint: should be off, if it is on, then you are add slashes twice...)
>>>-Brad
>>>
>>>afan@xxxxxxxx wrote:
>>>
>>>
>>>
>>>>ok. I just made one test and if you can then explain something to me:
>>>>I entered in form (textarea)
>>>>afan's "crazy" web
>>>>and stored in db using mysql-real_escape_string().
>>>>in DB, it's stored with slashes:
>>>>afan\'s \"crazy\" web
>>>>
>>>>Then I pulled that from DB on three different ways:
>>>>$query = mysql_query("select test from dbtest where rec_id = 5");
>>>>$result = mysql_fetch_array($query);
>>>>echo $result['gen_value'];		//	gives afan\'s \"crazy\" web
>>>>echo stripslashes($result['gen_value']);		//	gives afan's "crazy" web
>>>>echo htmlentities($result['gen_value']);		//	gives afan\'s \"crazy\"
>>>> web
>>>>
>>>>if stripslashes() is not correcct to use - what then?!?
>>>>
>>>>-afan
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>afan@xxxxxxxx wrote:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>after these very helpfull comments, I rad (again) Shiflett's (and few
>>>>>>others) Security articles about filtering input and output. And more
>>>>>> I
>>>>>>read - less is clear :(
>>>>>>
>>>>>>Before, I used addslash() before I insert data in database and
>>>>>>strislshe()
>>>>>>to show them on screen.
>>>>>>
>>>>>>Later found it's not good and start using mysql_real_escae_string()
>>>>>> to
>>>>>>add
>>>>>>to DB and stripslashe() to show on screen.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>If you have to stripslashes() when you pull data out of the db, you're
>>>>>doing something wrong (like running with magic_quotes* on, therefore
>>>>>double escaping your data).
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>But, also, I thought, mysql_real_escape_string() is "filter" for
>>>>>>everything, e.g. lets have three links (add, delete, edit) as
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>mysql_real_escape_string() *only* escapes the data which needs to be
>>>>>escaped for your particular db version.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>><a href=index.php?action=add&rec_id=$rec_id>Add new</a>
>>>>>><a href=index.php?action=edit&rec_id=$rec_id>Edit</a>
>>>>>><a href=index.php?action=delete&rec_id=$rec_id>Delete</a>
>>>>>>and was doing this way:
>>>>>>#index.php
>>>>>><?php
>>>>>>if($_GET['action'])
>>>>>>{
>>>>>>	$action = mysql_real_escape_string($_GET['action']);
>>>>>>	$rec_id = mysql_real_escape_string($_GET['rec_id']);
>>>>>>	switch($action)
>>>>>>	{
>>>>>>		case 'add':
>>>>>>			// add new record
>>>>>>		break;
>>>>>>
>>>>>>		case 'edit':
>>>>>>			// edit record
>>>>>>		break;
>>>>>>
>>>>>>		case 'delete':
>>>>>>			// delete record
>>>>>>		break;
>>>>>>	}
>>>>>>}
>>>>>>?>
>>>>>>
>>>>>>it means that $action I will never store in DB, neither show on
>>>>>> screen.
>>>>>>I
>>>>>>then wrong to
>>>>>>$action = mysql_real_escape_string($_GET['action']);
>>>>>>or I should
>>>>>>$action = htmlentities($_GET['action']);
>>>>>>or
>>>>>>$action = $_GET['action'];
>>>>>>is just fine?
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>If you're not going to display it or insert it...if all you're doing
>>>>> is
>>>>>checking the value of it, then you don't need to modify it.
>>>>>
>>>>>--
>>>>>John C. Nichel IV
>>>>>Programmer/System Admin (ÜberGeek)
>>>>>Dot Com Holdings of Buffalo
>>>>>716.856.9675
>>>>>jnichel@xxxxxxxxxxxxxxxxxxxxxxxxxxx
>>>>>
>>>>>--
>>>>>PHP General Mailing List (http://www.php.net/)
>>>>>To unsubscribe, visit: http://www.php.net/unsub.php
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>>
>>
>
>

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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux