Solved

mysql database hacked: <iframe></iframe> appended to a column

Posted on 2009-07-09
9
507 Views
Last Modified: 2012-05-07
My mysql database was hacked another time. The hacker just append an iframe to the title of my post for each entry. The content in the frame seems to be virus. Could anyone help me to avoid this in the future? I tried to use mysql_real_escape_string() for most of my queries, but not all (maybe I should check all files now). If I use mysql_real_escape_string() to all queries, will I be able to avoid this happening again? Is there any way to avoid hacker write iframe into database? Thanks.
0
Comment
Question by:rxzang
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
  • 2
  • +1
9 Comments
 
LVL 78

Expert Comment

by:arnold
ID: 24815025
You should.
Do you directly pass data from your web page into your mysql without validating data content?
It is hard to say.
A way to prevent data corruption in the database is to limit the possibility that an external user can submit queries directly to your database.
 
0
 
LVL 9

Expert Comment

by:wellhole
ID: 24815040
You should convert those < and > characters into the html equivalent before saving it into the database.
0
 

Author Comment

by:rxzang
ID: 24815231
Hi, wellhole:

Do you mean I have to change all my queries?

Thanks.
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 9

Expert Comment

by:wellhole
ID: 24815306
Your queries don't change. You just encode all strings written into the database for user submitted entries.

str = encode(str)

OR

You can encode them when you pull them back from the database. This way you don't have to deal with what people have already entered into your forum.
0
 
LVL 12

Accepted Solution

by:
jet-black earned 500 total points
ID: 24815500
Use the function like that before using your variables in SQL statement:
function prepare_($data, $do_not_use_html=1, $use_trim = 1)
{
    if ($use_trim) { $data = trim($data); }
    if(get_magic_quotes_gpc())
    {
        $data=stripslashes($data);
    }
    else
    {
        $data=addslashes($data);
    }
    $data=mysql_escape_string($data);
    if ($do_not_use_html) { $data = htmlspecialchars($data); }
    return $data;
}
 
example usage:
$data = prepare_($_POST['query']);

Open in new window

0
 

Author Comment

by:rxzang
ID: 24815600
Thanks. I have some function to check mysql data input. But I have a bunch of files, so I didn't use this function everywhere. Maybe I should use this function in all queries I have. Thanks!
0
 
LVL 12

Expert Comment

by:jet-black
ID: 24815635
Also you can also use the function strip_tags to remove all html tags within the field.
http://php.net/manual/en/function.strip-tags.php
0

Featured Post

U.S. Department of Agriculture and Acronis Access

With the new era of mobile computing, smartphones and tablets, wireless communications and cloud services, the USDA sought to take advantage of a mobilized workforce and the blurring lines between personal and corporate computing resources.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Inserting data into database 10 46
check mysql insert 12 43
MySQL-Design Help 12 42
Exchange 2016 CU5 HealthMailboxes growing and Your mailbox is almost full. 3 31
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
When it comes to protecting Oracle Database servers and systems, there are a ton of myths out there. Here are the most common.
Video by: Steve
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of dem…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

749 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question