פורסם 2009 בדצמבר 2215 שנים שלום, יש לי שרת ויש לנו Account manager שרשום בPHP, עכשיו כל יום כמעט פורצים לנו דרכו לSQL והם יכולים: לשנות סיסמאות, למחוק databases וכו'.שינינו את ההגדרות של SQL Server 2005 שלא יהיה אפשרי remote וחסמנו את פורט 1433 והם עדיין יכולים לפרוץ.השאלה איך לעשות את הPHP Code של הAccount manager בטוח ?שמעתי שיש משהו שנקרא : mysql escape string אבל לא יודע איך לרשום את זה והאם להוסיף את זה רק לindex.php או לכל הקבצים שנכתבו בPHP.תודה רבה,אבי
פורסם 2009 בדצמבר 2215 שנים sql injections הינם באגים בקוד הphp שלכםאיזה מערכת php מריץ השרת שלכםמשהו שאתם בניתם? או משהו בנויאם זה בנוי, מומלץ לעדכן תיקוני אבטחה, אם לא, מומלץ לתקן בעצמכם, אם תשתפו את הקוד, ניתן יהיה לעזור
פורסם 2009 בדצמבר 2215 שנים מחבר זה אנחנו בנינו.יש את כל העדכוני אבטחה ממיקרוסופט.אוקיי הנה הקוד של index.php :<?PHPdefine('XPT_MANAGER_SECURITY', 1);session_start();require_once 'configuration.php';require_once 'includes/odbc.php';require_once 'includes/function.php';require_once 'includes/function.account.php';require_once 'includes/function.character.php';$Session = G('s');// Logoutif($Session === 'logout') destroy_user_session();$Logged = isset($_SESSION['user_id']) && $_SESSION['user_id'] !== false;$Output = false;// Manager openedif($Configuration_Opened){ // Manager if($Logged) { require_once 'modules/manager.php'; } // Login + Register else { require_once 'modules/login.php'; }}// Manager closedelse{ require_once 'modules/closed.php';}?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">[/url]<html xmlns="[url]http://www.w3.org/1999/xhtml">[/url] <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title><?PHP echo $Configuration_Version; ?></title> <link rel="stylesheet" media="screen" type="text/css" title="styles" href="css/manager.css" /> <link rel="stylesheet" media="screen" type="text/css" title="styles" href="css/form.css" /> <link rel="stylesheet" media="screen" type="text/css" title="styles" href="css/box.css" /> <script type="text/javascript" src="javascript/prototype.js"></script> <script type="text/javascript" src="javascript/scriptaculous.js"></script> <script type="text/javascript" src="javascript/validation.js"></script> <script type="text/javascript" src="javascript/javascript.js"></script> </head> <body> <div class="body"> <?PHP echo $Output; ?> <p class="footer"><?PHP echo $Configuration_Version; ?> - © LightPT</p> </div> </body></html><?PHP myodbc_close_connection(); ?>
פורסם 2009 בדצמבר 2315 שנים הפתרון הנכון הוא אף פעם לא לבנות שאילתות SQL באמצעות שרשור מחרוזות שמכילות את הקלט של המשתמש, אלא תמיד באמצעות prepared statements. באופן זה, mysql בעצמו מונע את ה-sql injections.חפש בגוגל על mysql php prepared statements.
פורסם 2009 בדצמבר 2315 שנים דרך נוספת היא לבדוק סימנים מוסכמים:; מופיע פעם אחתפעולה וFROM מופיע פעם אחתהכל תלוי בשימוש שלכם.
פורסם 2009 בדצמבר 2315 שנים מחבר תודה לכולם על ההצעות , אני הולך ללמוד עליהם ולנסות אותם.שאלתי גם בפורום מחו''ל של PHP ואמרו לי : "you basically will need to put mysql_real_escape_string() around any input that comes from the user and goes into a database query"מה שהם אמרו יעבוד ?
פורסם 2009 בדצמבר 2315 שנים לא, אין קשר ביניהם. תשתמש ב-parameterized querieshttp://msdn.microsoft.com/en-us/library/cc296201%28SQL.90%29.aspx
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.