หัวข้อ: addslash กับ sql injection เริ่มหัวข้อโดย: nokia201 ที่ 12 กันยายน 2013, 01:47:46 อยากจะถามว่า function addslashes นี้สามารถป้องกัน sql injection ได้ไหมครับ
ขอบคุณครัับ :wanwan017: หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: Misaka ที่ 12 กันยายน 2013, 01:58:16 กันได้ครับแต่ปรกติผมใช้ htmlspecialchars($query,ENT_QUOTES)
รอท่าอื่นมาตอบครับ :wanwan017: หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: dekmv ที่ 12 กันยายน 2013, 01:59:57 mysql_real_escape_string($category)
หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: dekmv ที่ 12 กันยายน 2013, 02:00:30 กันได้ครับแต่ปรกติผมใช้ htmlspecialchars($query,ENT_QUOTES) htmlspecialchars($query,ENT_QUOTES)รอท่าอื่นมาตอบครับ :wanwan017: ได้เล่นกันครับ หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: MapTwoZa ที่ 12 กันยายน 2013, 08:44:17 1. การป้องกัน sql injection แบบเก่าๆ เลิกใช้ได้แล้วพวก mysql_real_escape_string
php เค้าเอาออกแล้วครับ (current stable version ปัจจุบันอยู่ที่ 5.5) 2. ไปใช้ MYSQL PDO/ MYSQLi prepare statement แล้ว bind parameter เอา (ไม่ต้องนั่งกังวลอีกต่อไป รับมายังไงก็ bind ไปอย่างนั้น จบ) โค๊ด: <?php เพิ่มเติม 3. พวก html filter ต่างๆ ไม่เกี่ยวกับ sql injection แต่เกี่ยวกับการป้องกัน post html tag / script tag ขึ้นมาบนเว็บ หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: nokia201 ที่ 12 กันยายน 2013, 13:26:06 ขอบคุณทุกท่านมากๆครับ
หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: igensite ที่ 12 กันยายน 2013, 14:06:09 1. การป้องกัน sql injection แบบเก่าๆ เลิกใช้ได้แล้วพวก mysql_real_escape_string php เค้าเอาออกแล้วครับ (current stable version ปัจจุบันอยู่ที่ 5.5) 2. ไปใช้ MYSQL PDO/ MYSQLi prepare statement แล้ว bind parameter เอา (ไม่ต้องนั่งกังวลอีกต่อไป รับมายังไงก็ bind ไปอย่างนั้น จบ) โค๊ด: <?php เพิ่มเติม 3. พวก html filter ต่างๆ ไม่เกี่ยวกับ sql injection แต่เกี่ยวกับการป้องกัน post html tag / script tag ขึ้นมาบนเว็บ ขอบคุณครับผม หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: igensite ที่ 12 กันยายน 2013, 14:12:57 $stmt->bindParam(':name', $name);
หมายความว่าอะไรครับ ? หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: adidog ที่ 12 กันยายน 2013, 14:41:16 1. การป้องกัน sql injection แบบเก่าๆ เลิกใช้ได้แล้วพวก mysql_real_escape_string php เค้าเอาออกแล้วครับ (current stable version ปัจจุบันอยู่ที่ 5.5) 2. ไปใช้ MYSQL PDO/ MYSQLi prepare statement แล้ว bind parameter เอา (ไม่ต้องนั่งกังวลอีกต่อไป รับมายังไงก็ bind ไปอย่างนั้น จบ) โค๊ด: <?php เพิ่มเติม 3. พวก html filter ต่างๆ ไม่เกี่ยวกับ sql injection แต่เกี่ยวกับการป้องกัน post html tag / script tag ขึ้นมาบนเว็บ เห็นแล้วคิดถึง .net แจ่มๆ น่าจะทำแบบนี้มาตั้งนานแล้ว หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: dekmv ที่ 12 กันยายน 2013, 16:46:45 กำลังศึกษา PDO อยู่พอดีครับ ... อันนี้แบบเก่าแล้วครับ :wanwan012:
หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: xvlnw.com ที่ 12 กันยายน 2013, 16:52:05 ใช้พวก Framework เขียนเลยก็ได้ครับ
มี SE มาให้แล้ว หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: dekmv ที่ 12 กันยายน 2013, 16:53:51 ใช้พวก Framework เขียนเลยก็ได้ครับ มี SE มาให้แล้ว ยังไงอ่ะครับ ... :P หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: xvlnw.com ที่ 12 กันยายน 2013, 17:18:10 ใช้พวก Framework เขียนเลยก็ได้ครับ มี SE มาให้แล้ว ยังไงอ่ะครับ ... :P ตัวอย่างของ CI ครับ http://codeigniter.in.th/user_guide/database/active_record.html หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: ฉันไม่มีตัวตน ที่ 12 กันยายน 2013, 17:56:38 งานเข้าล่ะผม ใช้ mysql_real_escape_string ทุกเว็บเลย :wanwan004:
หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: xvlnw.com ที่ 12 กันยายน 2013, 18:44:54 งานเข้าล่ะผม ใช้ mysql_real_escape_string ทุกเว็บเลย :wanwan004: ยังดีกว่าไม่ทำครับผม :) หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: ฉันไม่มีตัวตน ที่ 12 กันยายน 2013, 20:36:37 ผมนั่งอ่านบทความนี้มามะกี้ http://www.thaicreate.com/community/basic-mysqli-reference.html
ตกลงใช้แบบไหนหรอครับ ไม่รู้จริงๆนะ อยากเขียน OOP มานาน แบบของคุณ MapTwoZa ที่ใช้ prepare เรียกว่าอะไรหรอครับ ใช่ OOP หรือเปล่า หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: MapTwoZa ที่ 12 กันยายน 2013, 22:50:30 mysqli กับ mysql pdo
ในเชิงลึกๆ ผมไม่แน่ใจนะว่ามันต่างกันยังไง ซึ่งปรกติผมก็ไม่ได้ใช้ pdo ตรงๆครับ ผมจะใช้ doctrine2 เป็นตัวจัดการ database อีกที ( ที่เลือกใช้ตัวนี้เพราะมันเป็น framework ที่แทบจะเหมือนกับ JPA ใน java ทำให้ผมไม่ต้องเรียนรู้อะไรมากมาย แล้วเท่าที่อ่าน review ก็ถือเป็นตัวที่ดีที่สุดตัวนึงบน php ) http://www.doctrine-project.org/ ก่อนเริ่ม pdo vs mysqli มาดูก่อนครับว่าทำไมเค้าเอา mysql ธรรมดาออก เหตุผลก็คือ เพราะมันไม่มี prepare statement ครับ ซึ่ง prepare statement จำเป็นมากในด้านการป้องการ sql injection ในภาษาอื่นๆ ก็สามารถใช้ prepare statement ได้เกือบทั้งหมด แล้ว prepare statement ก็กัน sql injection ได้ 100% ประเด็นต่อไป mysqli vs pdo pdo มีความเป็น oop มากกว่า แล้วเหมาะนำไปใช้ใน ORM มากกว่า เอาข้อดีของ pdo ที่เหนือกว่า mysqli ก่อนละกัน 1. auto injection คือมันสามารถ query มาแล้ว auto set parameter ลง object ได้เลยครับ ตัวอย่างข้างล่าง (ตรงนี้ mysqli ก็มี แต่ดูแล้วยุ่งยากกว่านิดๆ ไม่เป็นไปในเชิง OO เท่าไรด้วย) โค๊ด: $dbh = new PDO("mysql:host=$hostname;dbname=school", $username, $password) 2. database support mysqli ใช้ได้กับ mysql อย่างเดียว กลับกัน pdo รองรับ database ได้ถึง 12 แบบ โปรเจคเปลี่ยนจาก mysql เป็น sql server โครงสร้างเดิม เปลี่ยน driver ก็ใช้งานได้ปรกติครับ 3. binding parameter pdo สามารถ bind ใส่ name ที่ต้องการได้ครับ แต่ mysqli ต้อง bind ตามลำดับเท่านั้น !! #PDO โค๊ด: $params = array(':username' => 'test', ':email' => $mail, ':last_login' => time() - 3600); #MySQLi โค๊ด: $query = $mysqli->prepare(' หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: xvlnw.com ที่ 12 กันยายน 2013, 23:11:14 ^
^ ^ +1 หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: 9wong ที่ 12 กันยายน 2013, 23:43:31 เหมือนจะมีในเล่มนี้ สำหรับการเขียนแบบ คุณ MapTwoZa
ถ้าผมจำไม่ผิด เพราะยังไม่ได้สอยมาอ่าน แฮะๆ แค่ไปแอบส่องๆ (https://se-edws.se-ed.com/Storage/Originals/978616/081/9786160813964L.jpg) หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: ossytong ที่ 13 กันยายน 2013, 00:14:45 addslashes()
สามารถป้องกันได้ครับ แต่การมีผลต่อ SQL INJECTION มันจะไม่สามารถสรุปได้ตรงๆหรอกครับ ว่าเราจะใช้อะไรกันได้ หรือไม่ได้ มันอยู่ที่ เคส SQL Cmd จริงๆครับ แต่ addslashes() เป็น 1 ในทางเลือกการป้องกัน SQL INJECTION ที่ได้ผล ครับ หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: MapTwoZa ที่ 13 กันยายน 2013, 00:36:41 addslashes() สามารถป้องกันได้ครับ แต่การมีผลต่อ SQL INJECTION มันจะไม่สามารถสรุปได้ตรงๆหรอกครับ ว่าเราจะใช้อะไรกันได้ หรือไม่ได้ มันอยู่ที่ เคส SQL Cmd จริงๆครับ แต่ addslashes() เป็น 1 ในทางเลือกการป้องกัน SQL INJECTION ที่ได้ผล ครับ addslashes() ก็มีเคสที่โดน sql injection ได้ mysql_real_escape_string() ก็มีเคสที่ยังโดน sql injection ได้ mysql_real_escape_string php ปรับเป็น deprecated ตั้งแต่ 5.3 แล้ว current stable ปัจจุบันก็เอาออกไปแล้ว ไม่สามารถใช้งานได้อีก prepare statement >> กันได้ 100% prepare statement >> รับมายังไงก็ใส่ไปได้เลยไม่เสียเวลานั่ง real escape + addslash prepare statement >> อ่าน query ได้ง่ายกว่าเยอะมากๆ เค้าใช้ prepare statement กันหมดทั้งโลกแล้วครับ framework ที่ทำฝั่ง model มาให้ ก็ใช้กันหมด ทุก ORM framework เค้าก็ใช้ prepare statement กันหมด ผมยังไม่เห็นว่า การที่ต้องไปนั่ง addslashes() ทุกครั้งที่รับ parameter มา มันน่าใช้กว่าตรงไหนเลยครับ ทำให้รำคาญซะอีก หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: dekmv ที่ 13 กันยายน 2013, 00:50:58 เป็นประโยชน์มากครับ ขอบคุณมากครับ :wanwan002:
หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: taokae ที่ 13 กันยายน 2013, 01:20:44 แต่ก่อนตอนเด็กๆ ผมทำแบบนี้เลยครับ
โค๊ด: foreach($_POST as $key => $value) $_POST[$key] = mysql_real_escape_string($value) โตมาอ่าน code ตัวเองแล้วขำ :wanwan004: หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: ฉันไม่มีตัวตน ที่ 13 กันยายน 2013, 12:14:09 แต่ก่อนตอนเด็กๆ ผมทำแบบนี้เลยครับ โค๊ด: foreach($_POST as $key => $value) $_POST[$key] = mysql_real_escape_string($value) โตมาอ่าน code ตัวเองแล้วขำ :wanwan004: อธิบายเพิ่มที ผมเขียนแบบนี้ล่ะ อยากรู้ว่าต้องเขียนแบบไหนจึงถูกต้องครับ :P สคริปผมต้องแก้ตรึมเลย :wanwan004: เมื่อวานก็เพิ่งเปลี่ยน mysql_fetch_array เป็น mysql_fetch_assoc ปล.คิดถูกจริงๆที่เข้ามาอ่านกระทู้นี้ :wanwan017: เอาข้อมูลมาเพิ่มครับ http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/ http://www.php.net/manual/en/mysqli.real-escape-string.php http://www.php.net/manual/en/ref.pdo-mysql.php http://www.php.net/manual/en/book.mysqli.php http://www.php.net/manual/en/ref.pdo-mysql.php http://www.thaicreate.com/community/php-mysql-to-mysqil.html http://www.thaicreate.com/community/basic-mysqli-reference.html http://www.alcaros.com/blog/index.php?topic=9 หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: dekmv ที่ 13 กันยายน 2013, 14:17:54 สรุปว่า
อ้างถึง 1. การป้องกัน sql injection แบบเก่าๆ เลิกใช้ได้แล้วพวก mysql_real_escape_string php เค้าเอาออกแล้วครับ (current stable version ปัจจุบันอยู่ที่ 5.5) 2. ไปใช้ MYSQL PDO/ MYSQLi prepare statement แล้ว bind parameter เอา (ไม่ต้องนั่งกังวลอีกต่อไป รับมายังไงก็ bind ไปอย่างนั้น จบ) อย่างโดยเร็ว ต้อนรับ PHP 5.5 :wanwan044: หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: siammbk ที่ 15 กันยายน 2013, 21:53:18 จริงๆ ถ้ามอง injection จาก url ออก
แค่ดักจาก get url มันก็น่าจะจบแล้วคับ ส่วนวิธีกรองก็มีหลายวิธีคับ หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: MASTER-X ที่ 15 กันยายน 2013, 22:21:29 เลิกกลัว sql i มาตั้งนานแล้ว ...
กลัวอย่างอื่นมากกว่า หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: siammbk ที่ 15 กันยายน 2013, 22:24:44 ผมสิโดนมากับตัวเอง injection เข้ามาลบ member ลบนั่นลบนี่
จนต้องมานั่งดูว่าเข้ามาจากอะไร เซงมากตอนข้อมูลหาย ผมเลยยอมเสียเวลามานั่งดู พอคิด logic กันขึ้นมาได้ มันก็ทำอะไรผมไม่ได้ละ สบายใจ :P หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: dekmv ที่ 15 กันยายน 2013, 23:56:44 ผมสิโดนมากับตัวเอง injection เข้ามาลบ member ลบนั่นลบนี่ จนต้องมานั่งดูว่าเข้ามาจากอะไร เซงมากตอนข้อมูลหาย ผมเลยยอมเสียเวลามานั่งดู พอคิด logic กันขึ้นมาได้ มันก็ทำอะไรผมไม่ได้ละ สบายใจ :P โดนมาสดๆเลยนะครับ :'( หัวข้อ: Re: addslash กับ sql injection เริ่มหัวข้อโดย: Amdroid ที่ 17 กันยายน 2013, 03:56:21 เลิกกลัว sql i มาตั้งนานแล้ว ... ก็กันเท่าที่กันได้อะครับกลัวอย่างอื่นมากกว่า |