MySQL sql ಇಂಜೆಕ್ಷನ್ ಅನ್ನು ಹೇಗೆ ತಡೆಯುತ್ತದೆ? SQL ಇಂಜೆಕ್ಷನ್ ತತ್ವ ಮತ್ತು ತಡೆಗಟ್ಟುವಿಕೆ

MySQLsql ಇಂಜೆಕ್ಷನ್ ಅನ್ನು ತಡೆಯುವುದು ಹೇಗೆ? SQL ಇಂಜೆಕ್ಷನ್ ತತ್ವ ಮತ್ತು ತಡೆಗಟ್ಟುವಿಕೆ

MySQL ಮತ್ತು SQL ಇಂಜೆಕ್ಷನ್

ನೀವು ವೆಬ್ ಪುಟದ ಮೂಲಕ ಬಳಕೆದಾರರು ನಮೂದಿಸಿದ ಡೇಟಾವನ್ನು ತೆಗೆದುಕೊಂಡು ಅದನ್ನು ಸೇರಿಸಿದರೆ aMySQL ಡೇಟಾಬೇಸ್, ನಂತರ SQL ಇಂಜೆಕ್ಷನ್ ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳು ಇರಬಹುದು.

ಈ ಅಧ್ಯಾಯವು SQL ಇಂಜೆಕ್ಷನ್ ಅನ್ನು ಹೇಗೆ ತಡೆಯುವುದು ಮತ್ತು SQL ನಲ್ಲಿ ಇಂಜೆಕ್ಟ್ ಮಾಡಲಾದ ಅಕ್ಷರಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಲು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದನ್ನು ನಿಮಗೆ ಪರಿಚಯಿಸುತ್ತದೆ.

ಡೊಮೇನ್ ಹೆಸರು ಅಥವಾ ಪುಟ ವಿನಂತಿಯ ಪ್ರಶ್ನೆ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಸಲ್ಲಿಸಲು ಅಥವಾ ಇನ್‌ಪುಟ್ ಮಾಡಲು ವೆಬ್ ಫಾರ್ಮ್‌ಗೆ SQL ಆಜ್ಞೆಗಳನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ದುರುದ್ದೇಶಪೂರಿತ SQL ಆಜ್ಞೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸರ್ವರ್ ಅನ್ನು ಮೋಸಗೊಳಿಸುವುದು SQL ಇಂಜೆಕ್ಷನ್ ಎಂದು ಕರೆಯಲ್ಪಡುತ್ತದೆ.

ನಾವು ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಎಂದಿಗೂ ನಂಬಬಾರದು, ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಡೇಟಾ ಅಸುರಕ್ಷಿತವಾಗಿದೆ ಎಂದು ನಾವು ಭಾವಿಸಬೇಕು ಮತ್ತು ನಾವೆಲ್ಲರೂ ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಡೇಟಾವನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.

ಕೆಳಗಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಮೂದಿಸಿದ ಬಳಕೆದಾರಹೆಸರು ಅಕ್ಷರಗಳು, ಸಂಖ್ಯೆಗಳು ಮತ್ತು ಅಂಡರ್‌ಸ್ಕೋರ್‌ಗಳ ಸಂಯೋಜನೆಯಾಗಿರಬೇಕು ಮತ್ತು ಬಳಕೆದಾರಹೆಸರು 8 ಮತ್ತು 20 ಅಕ್ಷರಗಳ ನಡುವೆ ಇರಬೇಕು:

if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches))
{
   $result = mysqli_query($conn, "SELECT * FROM users 
                          WHERE username=$matches[0]");
}
 else 
{
   echo "username 输入异常";
}

ಯಾವುದೇ ವಿಶೇಷ ಅಕ್ಷರಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡದಿದ್ದಾಗ ಸಂಭವಿಸುವ SQL ಪರಿಸ್ಥಿತಿಯನ್ನು ನೋಡೋಣ:

// 设定$name 中插入了我们不需要的SQL语句
$name = "Qadir'; DELETE FROM users;";
 mysqli_query($conn, "SELECT * FROM users WHERE name='{$name}'");

ಮೇಲಿನ ಇಂಜೆಕ್ಷನ್ ಹೇಳಿಕೆಯಲ್ಲಿ, ನಾವು $ಹೆಸರಿನ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿಲ್ಲ ಮತ್ತು ನಮಗೆ ಅಗತ್ಯವಿಲ್ಲದ SQL ಹೇಳಿಕೆಯನ್ನು $name ಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ, ಇದು ಬಳಕೆದಾರರ ಕೋಷ್ಟಕದಲ್ಲಿನ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಅಳಿಸುತ್ತದೆ.

PHP ಯಲ್ಲಿ mysqli_query() ಬಹು SQL ಹೇಳಿಕೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅನುಮತಿಸುವುದಿಲ್ಲ, ಆದರೆ SQLite ಮತ್ತು PostgreSQL ನಲ್ಲಿ, ಅನೇಕ SQL ಹೇಳಿಕೆಗಳನ್ನು ಒಂದೇ ಸಮಯದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು, ಆದ್ದರಿಂದ ನಾವು ಈ ಬಳಕೆದಾರರ ಡೇಟಾವನ್ನು ಕಟ್ಟುನಿಟ್ಟಾಗಿ ಪರಿಶೀಲಿಸಬೇಕಾಗಿದೆ.

SQL ಇಂಜೆಕ್ಷನ್ ಅನ್ನು ತಡೆಗಟ್ಟಲು, ನಾವು ಈ ಕೆಳಗಿನ ಅಂಶಗಳಿಗೆ ಗಮನ ಕೊಡಬೇಕು:

  • 1. ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಎಂದಿಗೂ ನಂಬಬೇಡಿ.ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ, ನೀವು ನಿಯಮಿತ ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ಬಳಸಬಹುದು ಅಥವಾ ಉದ್ದವನ್ನು ಮಿತಿಗೊಳಿಸಬಹುದು; ಏಕ ಉಲ್ಲೇಖಗಳು ಮತ್ತು ಡಬಲ್ "-" ಇತ್ಯಾದಿಗಳನ್ನು ಪರಿವರ್ತಿಸಿ.
  • 2. ಡೈನಾಮಿಕ್ ಅಸೆಂಬ್ಲಿ sql ಅನ್ನು ಎಂದಿಗೂ ಬಳಸಬೇಡಿ, ನೀವು ಪ್ಯಾರಾಮೀಟರ್ ಮಾಡಿದ sql ಅನ್ನು ಬಳಸಬಹುದು ಅಥವಾ ಡೇಟಾ ಪ್ರಶ್ನೆ ಮತ್ತು ಪ್ರವೇಶಕ್ಕಾಗಿ ನೇರವಾಗಿ ಸಂಗ್ರಹಿಸಿದ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಬಳಸಬಹುದು.
  • 3. ನಿರ್ವಾಹಕ ಸವಲತ್ತುಗಳೊಂದಿಗೆ ಡೇಟಾಬೇಸ್ ಸಂಪರ್ಕಗಳನ್ನು ಎಂದಿಗೂ ಬಳಸಬೇಡಿ, ಪ್ರತಿ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಸೀಮಿತ ಸವಲತ್ತುಗಳೊಂದಿಗೆ ಪ್ರತ್ಯೇಕ ಡೇಟಾಬೇಸ್ ಸಂಪರ್ಕಗಳನ್ನು ಬಳಸಿ.
  • 4. ಗೌಪ್ಯ ಮಾಹಿತಿಯನ್ನು ನೇರವಾಗಿ ಸಂಗ್ರಹಿಸಬೇಡಿ, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಮತ್ತು ಸೂಕ್ಷ್ಮ ಮಾಹಿತಿಯನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಅಥವಾ ಹ್ಯಾಶ್ ಔಟ್ ಮಾಡಬೇಡಿ.
  • 5. ಅಪ್ಲಿಕೇಶನ್‌ನ ವಿನಾಯಿತಿ ಮಾಹಿತಿಯು ಸಾಧ್ಯವಾದಷ್ಟು ಕಡಿಮೆ ಸುಳಿವುಗಳನ್ನು ನೀಡಬೇಕು ಮತ್ತು ಮೂಲ ದೋಷ ಮಾಹಿತಿಯನ್ನು ಕಟ್ಟಲು ಕಸ್ಟಮ್ ದೋಷ ಮಾಹಿತಿಯನ್ನು ಬಳಸುವುದು ಉತ್ತಮ
  • 6. sql ಇಂಜೆಕ್ಷನ್‌ನ ಪತ್ತೆ ವಿಧಾನವು ಸಾಮಾನ್ಯವಾಗಿ ಸಹಾಯಕವನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳುತ್ತದೆ软件ಅಥವಾ ಪತ್ತೆಹಚ್ಚಲು ವೆಬ್‌ಸೈಟ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್, ಸಾಫ್ಟ್‌ವೇರ್ ಸಾಮಾನ್ಯವಾಗಿ sql ಇಂಜೆಕ್ಷನ್ ಡಿಟೆಕ್ಷನ್ ಟೂಲ್ jsky ಅನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ವೆಬ್‌ಸೈಟ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ Yisi ವೆಬ್‌ಸೈಟ್ ಭದ್ರತಾ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಪತ್ತೆ ಸಾಧನವನ್ನು ಹೊಂದಿದೆ. MDCSOFT ಸ್ಕ್ಯಾನ್ ಮತ್ತು ಇತರರು.MDCSOFT-IPS ಅನ್ನು ಬಳಸುವುದರಿಂದ SQL ಇಂಜೆಕ್ಷನ್, XSS ದಾಳಿಗಳು ಇತ್ಯಾದಿಗಳ ವಿರುದ್ಧ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ರಕ್ಷಿಸಿಕೊಳ್ಳಬಹುದು.

SQL ಇಂಜೆಕ್ಷನ್ ಅನ್ನು ತಡೆಯಿರಿ

ಪರ್ಲ್ ಮತ್ತು PHP ಯಂತಹ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ ನೀವು SQL ಇಂಜೆಕ್ಷನ್ ಅನ್ನು ತಡೆಯಲು ಬಳಕೆದಾರರು ನಮೂದಿಸಿದ ಡೇಟಾವನ್ನು ತಪ್ಪಿಸಿಕೊಳ್ಳಬಹುದು.

PHP ಗಾಗಿ MySQL ವಿಸ್ತರಣೆಯು ವಿಶೇಷ ಇನ್‌ಪುಟ್ ಅಕ್ಷರಗಳಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳಲು mysqli_real_escape_string() ಕಾರ್ಯವನ್ನು ಒದಗಿಸುತ್ತದೆ.

if (get_magic_quotes_gpc()) 
{
  $name = stripslashes($name);
}
$name = mysqli_real_escape_string($conn, $name);
 mysqli_query($conn, "SELECT * FROM users WHERE name='{$name}'");

ಲೈಕ್ ಸ್ಟೇಟ್‌ಮೆಂಟ್‌ಗಳಲ್ಲಿ ಇಂಜೆಕ್ಷನ್

ಹಾಗೆ ಪ್ರಶ್ನಿಸುವಾಗ, ಬಳಕೆದಾರರು "_" ಮತ್ತು "%" ನೊಂದಿಗೆ ಮೌಲ್ಯಗಳನ್ನು ನಮೂದಿಸಿದರೆ, ಇದು ಸಂಭವಿಸುತ್ತದೆ: ಬಳಕೆದಾರರು ಮೂಲತಃ "abcd_" ಅನ್ನು ಪ್ರಶ್ನಿಸಲು ಬಯಸಿದ್ದರು, ಆದರೆ ಪ್ರಶ್ನೆಯ ಫಲಿತಾಂಶಗಳು "abcd_", "abcde" ಮತ್ತು "abcdf" ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ. " ಇತ್ಯಾದಿ; ಬಳಕೆದಾರನು "30%" ಅನ್ನು ಪ್ರಶ್ನಿಸಲು ಬಯಸಿದಾಗ ಸಮಸ್ಯೆಯು ಸಂಭವಿಸುತ್ತದೆ (ಗಮನಿಸಿ: ಮೂವತ್ತು ಪ್ರತಿಶತ).

PHP ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ನಾವು ಮೇಲಿನ ಸನ್ನಿವೇಶವನ್ನು ನಿರ್ವಹಿಸಲು addcslashes() ಕಾರ್ಯವನ್ನು ಈ ಕೆಳಗಿನ ಉದಾಹರಣೆಯಲ್ಲಿ ಬಳಸಬಹುದು:

$sub = addcslashes(mysqli_real_escape_string($conn, "%something_"), "%_");
// $sub == \%something\_
 mysqli_query($conn, "SELECT * FROM messages WHERE subject LIKE '{$sub}%'");

addcslashes() ಕಾರ್ಯವು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಅಕ್ಷರದ ಮೊದಲು ಬ್ಯಾಕ್‌ಸ್ಲ್ಯಾಶ್ ಅನ್ನು ಸೇರಿಸುತ್ತದೆ.

ಸಿಂಟ್ಯಾಕ್ಸ್ ಫಾರ್ಮ್ಯಾಟ್:

addcslashes(string,characters)
ನಿಯತಾಂಕವಿವರಣೆ
ಸ್ಟ್ರಿಂಗ್ಅಗತ್ಯವಿದೆ.ಪರಿಶೀಲಿಸಲು ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
ಪಾತ್ರಗಳುಐಚ್ಛಿಕ.addcslashes() ನಿಂದ ಪ್ರಭಾವಿತವಾಗಿರುವ ಅಕ್ಷರಗಳ ಅಕ್ಷರ ಅಥವಾ ಶ್ರೇಣಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.

ಹೋಪ್ ಚೆನ್ ವೈಲಿಯಾಂಗ್ ಬ್ಲಾಗ್ ( https://www.chenweiliang.com/ ) ಹಂಚಿಕೊಂಡಿದ್ದಾರೆ "Sql ಇಂಜೆಕ್ಷನ್ ಅನ್ನು MySQL ಹೇಗೆ ತಡೆಯುತ್ತದೆ? sql ಇಂಜೆಕ್ಷನ್ ತತ್ವ ಮತ್ತು ತಡೆಗಟ್ಟುವಿಕೆ", ಇದು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.

ಈ ಲೇಖನದ ಲಿಂಕ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಸ್ವಾಗತ:https://www.chenweiliang.com/cwl-500.html

ಇತ್ತೀಚಿನ ನವೀಕರಣಗಳನ್ನು ಪಡೆಯಲು ಚೆನ್ ವೈಲಿಯಾಂಗ್ ಅವರ ಬ್ಲಾಗ್‌ನ ಟೆಲಿಗ್ರಾಮ್ ಚಾನಲ್‌ಗೆ ಸುಸ್ವಾಗತ!

🔔 ಚಾನಲ್ ಟಾಪ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಮೌಲ್ಯಯುತವಾದ "ChatGPT ಕಂಟೆಂಟ್ ಮಾರ್ಕೆಟಿಂಗ್ AI ಟೂಲ್ ಬಳಕೆಯ ಮಾರ್ಗದರ್ಶಿ" ಪಡೆಯುವಲ್ಲಿ ಮೊದಲಿಗರಾಗಿರಿ! 🌟
📚 ಈ ಮಾರ್ಗದರ್ಶಿಯು ದೊಡ್ಡ ಮೌಲ್ಯವನ್ನು ಹೊಂದಿದೆ, 🌟ಇದು ಅಪರೂಪದ ಅವಕಾಶವಾಗಿದೆ, ಇದನ್ನು ತಪ್ಪಿಸಿಕೊಳ್ಳಬೇಡಿ! ⏰⌛💨
ಇಷ್ಟವಾದಲ್ಲಿ ಶೇರ್ ಮಾಡಿ ಮತ್ತು ಲೈಕ್ ಮಾಡಿ!
ನಿಮ್ಮ ಹಂಚಿಕೆ ಮತ್ತು ಇಷ್ಟಗಳು ನಮ್ಮ ನಿರಂತರ ಪ್ರೇರಣೆ!

 

ಪ್ರತಿಕ್ರಿಯೆಗಳು

ನಿಮ್ಮ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಪ್ರಕಟಿಸಲಾಗುವುದಿಲ್ಲ. ಅಗತ್ಯವಿರುವ ಕ್ಷೇತ್ರಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ * ಲೇಬಲ್

ಮೇಲಕ್ಕೆ ಸ್ಕ್ರಾಲ್ ಮಾಡಿ