MySQL sql ઈન્જેક્શનને કેવી રીતે અટકાવે છે? એસક્યુએલ ઈન્જેક્શન સિદ્ધાંત અને નિવારણ

MySQLsql ઈન્જેક્શનને કેવી રીતે અટકાવવું? એસક્યુએલ ઈન્જેક્શન સિદ્ધાંત અને નિવારણ

MySQL અને SQL ઈન્જેક્શન

જો તમે વેબ પેજ દ્વારા વપરાશકર્તા દ્વારા દાખલ કરેલ ડેટા લો અને તેને એમાં દાખલ કરોMySQL ડેટાબેઝ, તો 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}'");

ઉપરોક્ત ઇન્જેક્શન સ્ટેટમેન્ટમાં, અમે $name ના વેરીએબલને ફિલ્ટર કર્યું નથી, અને જે SQL સ્ટેટમેન્ટની અમને જરૂર નથી તે $nameમાં દાખલ કરવામાં આવે છે, જે વપરાશકર્તાઓના કોષ્ટકમાંનો તમામ ડેટા કાઢી નાખશે.

PHP માં mysqli_query() ને બહુવિધ SQL સ્ટેટમેન્ટ એક્ઝીક્યુટ કરવાની મંજૂરી નથી, પરંતુ SQLite અને PostgreSQL માં, એક જ સમયે બહુવિધ SQL સ્ટેટમેન્ટ એક્ઝીક્યુટ કરી શકાય છે, તેથી અમારે આ યુઝર્સના ડેટાને કડક રીતે ચકાસવાની જરૂર છે.

એસક્યુએલ ઇન્જેક્શનને રોકવા માટે, અમારે નીચેના મુદ્દાઓ પર ધ્યાન આપવાની જરૂર છે:

  • 1. વપરાશકર્તાના ઇનપુટ પર ક્યારેય વિશ્વાસ ન કરો.વપરાશકર્તાના ઇનપુટને તપાસો, તમે નિયમિત અભિવ્યક્તિનો ઉપયોગ કરી શકો છો અથવા લંબાઈને મર્યાદિત કરી શકો છો; સિંગલ અવતરણ અને ડબલ "-", વગેરે કન્વર્ટ કરો.
  • 2. ક્યારેય ડાયનેમિક એસેમ્બલી sql નો ઉપયોગ કરશો નહીં, તમે ડેટા ક્વેરી અને એક્સેસ માટે પેરામીટરાઇઝ્ડ sql નો ઉપયોગ કરી શકો છો અથવા સ્ટોર કરેલ પ્રક્રિયાઓનો સીધો ઉપયોગ કરી શકો છો.
  • 3. એડમિનિસ્ટ્રેટર વિશેષાધિકારો સાથે ડેટાબેઝ કનેક્શનનો ક્યારેય ઉપયોગ કરશો નહીં, દરેક એપ્લિકેશન માટે મર્યાદિત વિશેષાધિકારો સાથે અલગ ડેટાબેઝ કનેક્શનનો ઉપયોગ કરો.
  • 4. ગોપનીય માહિતીનો સીધો સંગ્રહ કરશો નહીં, પાસવર્ડ અને સંવેદનશીલ માહિતીને એન્ક્રિપ્ટ અથવા હેશ આઉટ કરશો નહીં.
  • 5. એપ્લિકેશનની અપવાદ માહિતી શક્ય તેટલા ઓછા સંકેતો આપવી જોઈએ, અને મૂળ ભૂલ માહિતીને લપેટવા માટે કસ્ટમ ભૂલ માહિતીનો ઉપયોગ કરવો શ્રેષ્ઠ છે.
  • 6. sql ઈન્જેક્શનની શોધ પદ્ધતિ સામાન્ય રીતે સહાયકને અપનાવે છે软件અથવા વેબસાઈટ પ્લેટફોર્મ શોધવા માટે, સોફ્ટવેર સામાન્ય રીતે sql ઈન્જેક્શન ડિટેક્શન ટૂલ jsky નો ઉપયોગ કરે છે અને વેબસાઈટ પ્લેટફોર્મ પાસે Yisi વેબસાઈટ સિક્યુરિટી પ્લેટફોર્મ ડિટેક્શન ટૂલ છે. MDCSOFT SCAN એટ અલ.MDCSOFT-IPS નો ઉપયોગ કરવાથી SQL ઈન્જેક્શન, XSS હુમલા વગેરે સામે અસરકારક રીતે બચાવ થઈ શકે છે.

એસક્યુએલ ઇન્જેક્શન અટકાવો

પર્લ અને 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/ ) શેર કર્યું "MySQL sql ઇન્જેક્શનને કેવી રીતે અટકાવે છે? sql ઈન્જેક્શન સિદ્ધાંત અને નિવારણ", તે તમને મદદ કરશે.

આ લેખની લિંક શેર કરવા માટે આપનું સ્વાગત છે:https://www.chenweiliang.com/cwl-500.html

નવીનતમ અપડેટ્સ મેળવવા માટે ચેન વેઇલિઆંગના બ્લોગની ટેલિગ્રામ ચેનલ પર આપનું સ્વાગત છે!

🔔 ચૅનલની ટોચની ડિરેક્ટરીમાં મૂલ્યવાન "ChatGPT કન્ટેન્ટ માર્કેટિંગ AI ટૂલ વપરાશ માર્ગદર્શિકા" મેળવનારા પ્રથમ બનો! 🌟
📚 આ માર્ગદર્શિકામાં ઘણું મૂલ્ય છે, 🌟આ એક દુર્લભ તક છે, તેને ચૂકશો નહીં! ⏰⌛💨
ગમે તો શેર કરો અને લાઈક કરો!
તમારી શેરિંગ અને લાઈક્સ એ અમારી સતત પ્રેરણા છે!

 

评论 评论

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. જરૂરી ક્ષેત્રો વપરાય છે * લેબલ

ટોચ પર સ્ક્રોલ કરો