0

I am using plist to parse dozens of data into tableview. It works pretty fine. Yet, it is unprotected. Someone can easily reach that plist file if he opens the content of .ipa file. I want to protect my data. Is there anyway to protect .plist file? As far as I know, Sqlite protects data by changing values into complex keys. Yet, if I am to use sqlite for my app, I have to change the way how I parse data into strings. I know nothing about SQLite.

Where to start? What do you suggest? Is there easier and better way of protecting data in ios apps?

Thanks in advance.

Example of my plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <dict>
        <key>quizName</key>
        <string>History</string>
        <key>quizDescription</key>
        <string>Check your knowledge about great historical events, who did what where to whom!</string>
        <key>quizImageName</key>
        <string>quiz-history.png</string>
        <key>questions</key>
        <array>
            <dict>
                <key>question</key>
                <string>In monarchy, for how long does the head of state rule?</string>
                <key>answers</key>
                <array>
                    <string>5 years</string>
                    <string>until someone else is elected</string>
                    <string>as long as he/she is the party leader</string>
                    <string>until death or abdication</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>3</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>When was World War 2 fought?</string>
                <key>answers</key>
                <array>
                    <string>1935 - 1939</string>
                    <string>1914 - 1918</string>
                    <string>1939 - 1945</string>
                    <string>1918 - 1939</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>2</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>Peloponnesian War was famous greek war between...</string>
                <key>answers</key>
                <array>
                    <string>Athens and Sparta</string>
                    <string>Greece and Persia</string>
                    <string>Athens and Attica</string>
                    <string>Greece and Macedonia</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>Battle of the Pyramids was fought between which two forces?</string>
                <key>answers</key>
                <array>
                    <string>Egypt and Rome</string>
                    <string>French and Mamluk</string>
                    <string>Egypt and Persia</string>
                    <string>Mamluk and Rome</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>1</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>First Winter Olypmics were held in...</string>
                <key>answers</key>
                <array>
                    <string>Italy, 1920</string>
                    <string>Germany, 1921</string>
                    <string>England, 1928</string>
                    <string>France, 1924</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>3</integer>
            </dict>
        </array>
    </dict>
    <dict>
        <key>quizName</key>
        <string>Animal kingdom</string>
        <key>quizDescription</key>
        <string>Not sure how many legs does the spider have? Test your knowledge and find out!</string>
        <key>quizImageName</key>
        <string>quiz-animals.png</string>
        <key>questions</key>
        <array>
            <dict>
                <key>question</key>
                <string>Where were the cats domesticated?</string>
                <key>answers</key>
                <array>
                    <string>In Greece, around 500 B.C.</string>
                    <string>In ancient Egypt, around 1.600 B.C.</string>
                    <string>In China, around 2.000 B.C.</string>
                    <string>In Mongolia, around 1.400 B.C.</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>1</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>Dogs have a range of hearing of...</string>
                <key>answers</key>
                <array>
                    <string>approximately 40 Hz to 60,000 Hz</string>
                    <string>approximately 10,000 Hz to 60,000 Hz</string>
                    <string>approximately 40 Hz to 5,000 Hz</string>
                    <string>approximately 5,000 Hz to 30,000 Hz</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>Meerkats can be found where?</string>
                <key>answers</key>
                <array>
                    <string>Australia</string>
                    <string>north Africa and south-west Asia</string>
                    <string>south Africa</string>
                    <string>Africa and Australia</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>2</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>Biggest mammal is...</string>
                <key>answers</key>
                <array>
                    <string>Blue whale</string>
                    <string>Elephant</string>
                    <string>Killer whale</string>
                    <string>Rhinoceros</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>Which of these animals sheads it&apos;s skin?</string>
                <key>answers</key>
                <array>
                    <string>monkey</string>
                    <string>narwal</string>
                    <string>snake</string>
                    <string>cow</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>2</integer>
            </dict>
        </array>
    </dict>
</array>
</plist>
  • what have you tried so far? And as an additional note, using SQLite certainly is not in any way suitable (in itself) for protecting data. – Till Jan 17 '13 at 20:14
  • 1
    I don't think converting to sqlite really does anything as far as protection goes - people can still just use the `sqlite3` utility to poke around in your database. Maybe consider asking a question about *data protection*, rather than about sqlite. – Tim Jan 17 '13 at 20:16

1 Answers1

1

If all you want is to encrypt your plist files then have a look at this SO question.

If you really want sqlite, then instead of dealing with sqlite directly, have a look at CoreData. Core data is an Apple framework which makes it very easy to store and fetch data using NSObjects and relationships. Core data can use sqlite for storage if you want. There's a fairly steep learning curve but it's worth learning since it's a very useful framework to master.

Keep in mind the sqlite DB is just stored in a file which anyone can read by default. So you'll need a little more effort to encrypt it.

Community
  • 1
  • 1
nebs
  • 4,939
  • 9
  • 41
  • 70
  • +1 for the link to the question about encryption - that seems to address the real question. – Tim Jan 17 '13 at 20:17
  • @Tim: Good call, I've moved this link to the first line to give it more emphasis. – nebs Jan 17 '13 at 20:20