ป้องกัน csrf xss ผ่าน form ด้วย php
หน้าแรก PHP MySQL เกร็ดความรู้ ป้องกัน csrf xss ผ่าน form ด้วย php
class Veesf ที่ผมทำขึ้นมานี้ ได้มาจากการใช้ codeigniter 2 แล้วได้เห็นการทำงานของตัวช่วยรักษาความปลอดภัยต่างๆที่ทำงานได้อย่างมีประสิทธิภาพ.
ผมจึงลองหา class ต่างๆที่มีแจกในเน็ตที่เกี่ยวข้องกันนี้
และได้เขียนออกมาเป็น class นี้ เพื่อแจกจ่ายให้ web developer (php)
ได้นำไปใช้กันเพื่อเสริมความปลอดภัยให้เว็บที่คุณทำ.
ดาวน์โหลด 1.01
Properties/Methods ต่างๆที่มี
| property/method | attribute | รายละเอียด |
| csrf_prevention (property) | กำหนดว่าจะมีการป้องกัน csrf หรือไม่. ค่าที่กำหนดเป็น boolean(true/false) ค่าเดิมคือ true | |
| csrf_token_name | กำหนดชื่อของ csrf token ค่าเดิมคือ csrf_token | |
| form_close() | ปิดฟอร์ม ออกมาเป็นแทก | |
| form_hidden($hidden_name = '', $hidden_value = '', $attribute = '') | $hidden_name @string $hidden_value @string $attribute @array |
เขียนแทก input type="hidden" ตัวอย่าง echo $veesf->hidden("hidden_name", "hidden_value", array("id"=>"myid", "class"=>"myclass")); จะได้ |
| form_open($action = '', $attribute = '') | $action @string $attribute @array |
เขียนแทกเปิดฟอร์ม ตัวอย่าง echo $veesf->form_open("page.php", array("enctype"=>"multipart/form-data", "id"=>"myid")); จะได้ และจะได้ ถ้ามีกำหนดให้ป้องกัน csrf |
| form_open_multipart($action = '', $attribute = '') | $action @string $attribute @array |
เขียนแทกเปิดฟอร์ม สำหรับอัปโหลด ตัวอย่าง echo $veesf->form_open_multipart("page.php", array("id"=>"myid")); จะได้ และจะได้ ถ้ามีกำหนดให้ป้องกัน csrf |
| generate_token() | สำหรับสร้าง input hidden เพื่อใส่ค่าป้องกัน csrf ทางฟอร์ม method นี้ไม่จำเป็นต้องใช้ถ้าหากเปิดฟอร์มด้วย form_open แล้ว |
|
| input_get($name = '', $xssfilter = false) | $name @string $xssfilter @boolean |
รับค่า $_GET โดยหากไม่มีค่าใดส่งมาจะได้ null กำหนด $xssfilter เป็น true เพื่อป้องกันการโจมตีแบบ cross site scripting(xss) |
| input_post($name = '', $xssfilter = false) | $name @string $xssfilter @boolean |
รับค่า $_POST โดยหากไม่มีค่าใดส่งมาทาง method post จะได้ null กำหนด $xssfilter เป็น true เพื่อป้องกันการโจมตีแบบ cross site scripting(xss) |
| xss_clean($data) | $data @mixed | กรองเพื่อป้องกันการโจมตีแบบ xss method นี้ถูกเรียกใช้ใน input_get และ input_post โดยอัตโนมัติ เมื่อกำหนด $xssfilter เป็น true |
ตัวอย่างการใช้งาน
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
จากนั้นให้ทดลองการป้องกันด้วยวิธีจากในเว็บต่อไปนี้
http://www.owasp.org/index.php/Testing_for_CSRF_%28OWASP-SM-005%29 csrf
http://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29 xss
http://www.chipmunkninja.com/Helping-Prevent-XSS-Attacks-in-2@ xss
ในส่วนของการป้องกัน xss ที่ทำมาแล้วนั้น ยังไม่ได้ผลลัพธ์เป็นที่น่าพอใจเท่าใดนัก แม้ว่าจะป้องกันได้ดีแล้วก็ตาม.
การ กำหนดว่าจะป้องกัน csrf หรือไม่นั้น สามารถกำหนดได้โดยผ่าน config
เช่น $config['csrf_prevention'] = false; แล้วเริ่ม class $vsf = new
veesf($config);
หรือกำหนดหลังเริ่ม class แล้วก็ได้ เช่น $vsf->csrf_prevention = false;
จาก: http://okvee.net/th/post/secured-form-and-prevent-...
ขึ้นไปด้านบน
