64
Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) [email protected] 2015-10-28

Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) [email protected] 2015-10-28

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Mõned asjad, mida igaIT-inimene peab teadma.

Aleks-Daniel Jakimenko-Aleksejev (134502)[email protected]

2015-10-28

Page 2: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

IT maailmas on ainult üks keel, mida igaüks peab teadma.

Page 3: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Inglise keel!

Page 4: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

That's why the rest of this presentation will be in English.

Page 5: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Plan● Code written by a student vs code written by a programmer● Unicode● Software licenses● Social networks● Programming languages● Operating systems● How not to escape strings passed to databases● Text editors● Cookies● How to make hackers grumpy● English

Page 6: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Plan10. Code written by a student vs code written by a programmer9. Unicode8. Software licenses7. Social networks6. Programming languages5. Operating systems4. How not to escape strings passed to databases3. Text editors2. Cookies1. How to make hackers grumpy0. English

Page 7: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28
Page 8: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

XSS

Page 9: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

“Pffft. Not gonna to happen with me!”

Page 10: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

“I double-checked that all user-submitted data is filtered!”

Page 11: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Fair enough! Let's see how it works in real life…

Page 12: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

eKool

Page 13: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

CV Keskus

Page 14: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

“OK-OK!”Maybe there is a better way?

Page 15: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Most XSS attacks target theft of session cookies.

Page 16: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

「 HttpOnly 」 flag – no cookies for you!

(by the way, 「 secure 」 flag is also very helpful)

Page 17: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Still a broad range of attacks are possible.

Page 18: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Well, let's disable inline javascript!

Page 19: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

「 CSP 」 (Content Security Policy)

Page 20: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

No inline javascript = no XSS, no problems!

Page 21: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

HA-HA!

Page 22: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Well, not completely.Browser support is not that great.

Page 23: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Security problems aside…

Page 24: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Text editors

Page 25: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

「 Vim 」 ! 「 Emacs 」 !

Page 26: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Uh, so Vim or Emacs?

Page 27: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Use both – 「 Spacemacs 」 !

Page 28: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Back to our boring security vulnerabilities…

Page 29: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

SQL Injection

Page 30: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

mysqli_real_escape_string

Page 31: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Use 「 PDO 」 in PHP

Page 32: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Search for 「 Prepared Statements 」 or 「 Parameterized Queries 」 to find how to do that

in other languages.

Page 33: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Social networks??

Page 34: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

GitHub, BitBucket, GitLab…

Page 35: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

If you have no GitHub account…

Page 36: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

… then you have great potential to become a professional burger flipper!

Page 37: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

“ 「 Free software 」 ?”“And what are these licenses?”

Page 38: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Search for 「 choose a software license 」

Page 39: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

A couple of words aboutprogramming languages…

Page 40: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

New project!Which language would you choose?

Page 41: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Programming language is a tool.

Page 42: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

You should choose appropriate tool for each task.

Page 43: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Your previous experience does not necessarily play any role in that decision.

Page 44: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Same goes for operating systems.

Page 45: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Windows Server? Uhh… Try 「 GNU/Linux 」 .

Page 46: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

➳ �nicode ❣

Page 47: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

“Ä” vs “Ä”

What's the length of these strings?

Page 48: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Come on! It's a no-brainer! ONE!

Page 49: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

If only your programming language was that smart…

Page 50: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Ä Ä

Bytes 2 3

Code points 1 2

Glyphs 1 1

“Ä” vs “Ä”

「 Combining Characters 」 !

Also, you can read about 「 Unicode Normalization 」 .

Page 51: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Finally, how to identify a student by his code?

Page 52: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

A

Page 53: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

B

Page 54: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

OK, he fixed it!

Page 55: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

C

Page 56: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

D

Page 57: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

No difference?

Page 58: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Maybe this is going to help…

Page 59: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

No-o-o!

Page 60: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

See 「 PEP8 」 (Python)

Page 61: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Search for 「 Code Conventions 」 in other languages.

Page 62: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Enough for now!

Page 63: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28

Thank you!

Page 64: Mõned asjad, mida iga IT-inimene peab teadma.€¦ · Mõned asjad, mida iga IT-inimene peab teadma. Aleks-Daniel Jakimenko-Aleksejev (134502) alex.jakimenko+IDX5721@gmail.com 2015-10-28