เขียนโค้ดให้ปลอดภัย
ก็เป็นทักษะอย่างหนึ่งที่ควรรู้
ตัวอย่างเป็นโค้ด PHP
.
ให้คิดว่าตัวแปร $value มีค่าเป็นสตริง
ข้างในอยู่ในรูปแบบตัวเลข
เช่น เอาไว้ใช่เก็บพวกเลข session id หรือ token อะไรก้ได้
.
แล้วสมมติว่า $value
มันดันรับค่าเป็น '0e......' (ตามด้วยตัวเลข)
เช่น
$value = '0e125996890409996004'
.
แบบนี้ถ้าใช่การเปรียบเทียบ
ในนิพจน์ของประโยคเปรียบเทียบ
ใช้โดยไม่ระวังตัวแล้วละก็
.
ก็อาจเกิดช่องโหว่
ถ้าเบาๆ หน่อยก็เป็น bug นิดหน่อย
.
แต่ถ้าร้ายแรง ก็จะกลายเป็นช่องโหว่ความปลอดภัยได้ด้วย
ยิ่งในเงื่อนไข
มันเอาไว้เช็คพวกสิทธิต่างๆ ด้วยแล้วละก็
ถ้าเช็คพลาด หลุดไปได้
ก็จะเข้าถึงสิ่งที่ไม่ควรเข้าถึงได้
แบบนี้ hacker นั่งยิ้มเลย
.
✍ เขียนโดย โปรแกรมเมอร์ไทย thai programmer
Write the code safely.
It's one skill to know.
Example is a PHP code
.
To think that $value variant is worth a string.
Inside is in number form.
For example, keep those session id or token numbers.
.
And assume $value
It accepts value as '0 e......' (followed by numbers)
For example,
$value = '0e125996890409996004'
.
This is if it's a comparison.
In the litigation of comparison sentences
Use it without being careful.
.
Maybe a loophole.
If it's a little bit of a bug.
.
But if it's deadly, it can also be a safety loophole.
The more in terms.
It's for checking the rights too.
If you miss it, you can slip it.
It's gonna reach the unaccountable
This is a hacker sitting and smiling.
.
✍ Written by Thai programmer thai coderTranslated
同時也有25部Youtube影片,追蹤數超過4萬的網紅吳老師教學部落格,也在其Youtube影片中提到,PHP與雲端資料庫教學總整理(2015) 完整連結: http://terry55wu.blogspot.tw/2015/04/phpapp.html 最近開的課程其實都是可以相互整合的, 而這些可成都跟目前大數據時代的處理與應用有很大的關係, 其中有和APP開發有關的有 ANDROID APP...
「php session」的推薦目錄:
- 關於php session 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最讚貼文
- 關於php session 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳貼文
- 關於php session 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳貼文
- 關於php session 在 吳老師教學部落格 Youtube 的最讚貼文
- 關於php session 在 吳老師教學部落格 Youtube 的最佳解答
- 關於php session 在 吳老師教學部落格 Youtube 的精選貼文
- 關於php session 在 [基礎課程] PHP SESSION 與COOKIE - 洛奇的邪惡組織手札 的評價
- 關於php session 在 PHP+MySQL網站程式免費入門教學課程25-使用 ... - YouTube 的評價
- 關於php session 在 php-src/session.c at master - GitHub 的評價
- 關於php session 在 PHP session variables not being maintaned - Stack Overflow 的評價
php session 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳貼文
เขียนโค้ดให้ปลอดภัย
ก็เป็นทักษะอย่างหนึ่งที่ควรรู้
ตัวอย่างเป็นโค้ด PHP
.
ให้คิดว่าตัวแปร $value มีค่าเป็นสตริง
ข้างในอยู่ในรูปแบบตัวเลข
เช่น เอาไว้ใช่เก็บพวกเลข session id หรือ token อะไรก้ได้
.
แล้วสมมติว่า $value
มันดันรับค่าเป็น '0e......' (ตามด้วยตัวเลข)
เช่น
$value = '0e125996890409996004'
.
แบบนี้ถ้าใช่การเปรียบเทียบ
ในนิพจน์ของประโยคเปรียบเทียบ
ใช้โดยไม่ระวังตัวแล้วละก็
.
ก็อาจเกิดช่องโหว่
ถ้าเบาๆ หน่อยก็เป็น bug นิดหน่อย
.
แต่ถ้าร้ายแรง ก็จะกลายเป็นช่องโหว่ความปลอดภัยได้ด้วย
ยิ่งในเงื่อนไข
มันเอาไว้เช็คพวกสิทธิต่างๆ ด้วยแล้วละก็
ถ้าเช็คพลาด หลุดไปได้
ก็จะเข้าถึงสิ่งที่ไม่ควรเข้าถึงได้
แบบนี้ hacker นั่งยิ้มเลย
.
✍ เขียนโดย โปรแกรมเมอร์ไทย thai programmer
php session 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳貼文
+++ access token คืออะไรใน facebook ++++
😋 ปกติ facebook เปิดให้เว็บ (รวมทั้งแอพ) ที่เราเขียนขึ้น
สามารถใช้ระบบ login ของ facebook ได้
ทำให้เว็บนั้นได้สิทธิเข้าถึงข้อมูลส่วนตัวของ user นั้นๆ บน facebook
.
และในหลายเว็บไซต์ เราคงเคยเห็น
ขอแค่มีแอคเคาท์เฟสบุ๊คก็สามารถล็อกอินได้เลย
ไม่ต้องเสียเวลายุ่งยาก กรอกสมัครสมาชิกใหม่แต่อย่างใด
:
โดยในโพสต์นี้จะขออ้างอิง
การใช้ระบบล็อกอิน facebook
ซึ่งเบื้องหลังความสำเร็จนั้น facebook จะแจก access token
เพื่อให้เว็บใดๆ สามารถนำไปใช้จัดการยูสเซอร์ล็อกอินได้
:
ก่อนจะพูดถึง access token ขอย้อนไปสมัยวัยกระเตาะปี 2534
เมื่อ "ทิม เบอร์เนิร์ส-ลี" ได้ทำคลอดเว็บไซต์แรกของโลก
จนเป็นสิ่งสามัญประจำบ้านที่มนุษย์โลกใช้เป็น
:
❣ แต่จุดอ่อนของฉัน ....อยู่ที่หัวใจ
เฮยไม่ช่ายแหละ จุดอ่อนของเว็บไซต์
ก็คือมันใช้โปโตคอล HTTP
ซึ่งมันเป็นแบบ stateless ไม่จำสถานะอะไรทั้งนั้น
ความหมายก็คือ ตัว Server ความจำสั้นมาก เป็นโรคอัลไซเมอร์
พอมันรับ request จาก browser
ก็จำไม่ได้ว่ามาจากไหน???
ใครส่งมาจำไม่ได้แล้ว!!!!!
:
🤔 เพื่อแก้ปัญานี้ในทางเทคนิค
เขาจะให้ server ส่ง session id (หรือ session token)
ซึ่ง session id มันเป็นรหัสบางอย่าง ที่เราอ่านไม่ออก แถมยาวด้วย
มันจะถูกส่งไปให้ browser เก็บค่านี้ไว้ในคุ๊กกี้เสี่ยงทาย
.
..ผิดๆ ไม่ใช่คุ๊กกี้นั้น ..แต่ cookies ที่ว่าคือไฟล์ text
Server จะส่ง session id ไปให้ browser
เก็บค่าไว้ใน cookies (เก็บใส่ text อยู่ฝั่ง browser)
:
เวลาเขียนโปรแกรมในฝั่ง server
อย่าง PHP เมื่อใช้คำสั่ง session_start();
จะเป็นการบอกให้ browser เก็บค่า session id ในรูป text เช่น
PHPSESSID=tqb4s5q7k25234eabbvs11dp02
(session id เป็นรหัสที่สุ่มขึ้นมา)
:
แต่ถ้าเป็นภาษาอื่น ก็อาจเห็นเป็นคำอื่นนะครับ
เช่น JSESSIONID (Java EE), PHPSESSID (PHP), และ ASPSESSIONID (Microsoft ASP).
.
😉 ถึงตรงนี้ session id ...อาจมองว่าเป็นรหัสประจำตัวก็ได้
:
ต่อไปนี้เวลาผู้ใช้กดคลิกอะไรบนหน้าเว็บ
ทาง browser ก็จะใจดี
แอบส่ง session id ที่ว่านี้ ไปให้ server อัตโนมัติ
ทำให้ server หายจากอัลไซเมอร์
...จำได้แล้วว่า request ส่งมาจากไหน ...เย้ เย้
.
ดังนั้นถ้าเกิด request ที่ส่งเข้ามา
มันมี session id ค่าเดียวกัน
ก็ถือว่าเป็นพรรคพวกเดียวกัน
(ศัพท์ทางคอมจะบอกว่า request พวกนี้อยู่ SESSION เดียวกัน)
.
แล้วถ้าไม่ใช่ session id เดียวกัน
ก็ถือว่า request นั้น ไม่ใช่พวกพ้องเดียวกัน
:
👉 ประโยชน์ของ session id
จะถูกนำไปใช้ร่วมกับกลไก login/logout
1) เมื่อ user ชื่อ XXX ทำการ login เข้ามา ก็จะมี session id เป็นรหัสประจำตัวอันหนึ่ง
2) พออีก user ชื่อ YYY ทำการ login เข้ามา จะมี session id เป็นรหัสประจำตัวคนละตัว
3) พอทั้งสอง user ทำการ logout ก็จะทำให้ session id หมดอายุ
:
คำถาม ถ้าเราไปกดล้าง cookies ทั้งหมดใน browser จะเกิดอะไรขึ้น?
- คำตอบค่า session id จะหายไปหมด
- ดังนั้นใครแอบ login ค้างเว็บโป้ เว็บโน่นนี้นั่น อะไรไว้ ...หึหึๆๆ
- ก็ต้อง logout อัตโนมัติ เพื่อ login ใหม่ ...เศร้ามั๊ยละ
(server จำเราไม่ได้แล้ว
เพราะ browser ไม่ส่ง session id ไปให้)
:
เรื่อง session id ฟังเหมือนดี
😨 แต่การใช้ร่วมกับ user/password เพื่อ login จะมีข้อเสีย เช่น
1) ง่ายต่อ hacker มาแอบลอบขี่ session
เพื่อสวมรอยใช้ sesion id (Cross-Site Request Forgery: CSRF)
...ทางเทคนิคขอไม่พูดถึง หาอ่านตามเว็บได้
2) เป็นภาระให้ server ต้องจำ session id ว่าเป็นของ user คนใด มีสิทธิอะไรบ้าง และจำข้อมูลอื่นๆ ของ user เป็นต้น
3) แล้วถ้าจะให้ user เดียวกัน login คนละอุปกรณ์ เช่น
เว็บก็ได้ มือถือก็ดี ...จะยุ่งยากมากขึ้น (ต้องก็อปปี้ session ไปให้)
4) และข้อเสียอื่นๆ ทีไม่ได้กล่าวถึง
:
😘 แต่เขาก็มีเทคนิคเพื่อแก้ทางนะครับ
.
ก็คือใช้สิ่งที่เรียกว่า "acces token "
ซึ่งการที่จะได้ acces token
ก็ต้อง login ด้วย user/password เพื่อไปแลกเอามา
...ต้องยืนหมู ยืนแมวกันก่อน ถึงจะได้ access token
จากนั้นเราจะใช้มันแทนการ login ได้เลย
.
ทำให้เราไม่ต้องป้อน user/password บ่อยๆ
แล้วแต่ละ user ก็จะได้ access token หน้าตาไม่เหมือนกันเด็ดขาด
พอถึงเวลา user ทำการ logout ออกไป ตัว access token ก็จะหมดอายุทันที
:
😙 ถึงตรงนี้ access token อาจเปรียบได้เหมือนกุญแจ
หรืออาจมองเป็นตั๋ว หรือบัตรผ่านก็ได้ ...แล้วแต่จินตนาการเปรียบเปรย
ข้อแตกต่างจาก session id ก็คือ
1) access token จะไม่ถูกเก็บใน cookies
2) access token จะเก็บข้อมูล ที่พอเปิดเผยได้
เช่น user_id, สิทธิต่างๆ , วันหมดอายุ
(ไม่เป็นภาระให้ server จำข้อมูลพวกนี้)
:
ยิ่งถ้านำ access token ไปใช้งานร่วมกับกลไกล login ก็จะเห็นข้อดี เช่น
1) ป้องกัน hacker ไม่ให้แอบใช้ session ด้วยวิธี Cross-Site Request Forgery (CSRF)
2) สามารถ login จากมือถือ และเว็บ เพียงแค่ใช้ user เดียวกัน ก็ทำได้ง่ายดาย
ก็แค่แจก access token ให้แค่นั้น ...ก็เหมือนที่ facebook ทำไง
(ไม่เก็บไว้ใน cookies ของ browser)
3) ตัว server สามารถทิ้งหน้าที่ login/logout อันเสียยุ่งยาก ...โยนไปให้ authenticate service ข้างนอกทำแทน
4) ตัว server ไม่ต้องมีภาระดูแลข้อมูล user
:
😀 ตัดกลับมาดูกลไก login ด้วย user/password ของ facebook
ซึ่งคอนเซปต์ตามรูปที่โพสต์เลยครับ (เป็นตัวอย่าง php)
สรุปง่ายๆ
- เวลา user ทำการ login
- มันจะแอบสวิซ์ไปหา facebook ให้ทำหน้าที่ login แทน
- เมื่อนั้น facebook จะโยน access token กลับมาให้เว็บเรา
- จากนั้น user จะใช้มันเป็นบัตรผ่าน ไม่ต้อง login ซ้ำอีกแหละ
:
ซึ่ง Access token ของเฟสบุ๊คมีหลายชนิด เช่น
-User Access Token
-App Access Token
-Page Access Token
-Client Token
แต่ละชนิดมีสิทธิแตกต่างกันได้ ขอไม่ลงลึกนะ
:
👉 เรื่อง session id กับ access token ที่เล่ามาทั้งหมดนี้
ถือเป็นขอหวานอันแสนหอมที่ hacker ชอบมากๆ
ถ้าพวกเขาขโมยได้ รับรองว่าจะสวมรอย user ที่กำลัง login ได้
จากนั้น hacker จะได้สิทธิทุกอย่างเหมือน user นั้นหมด ...เสร็จโจรละที่นี้
.
ยกเว้นเราจะ logout ออก
เพื่อให้ session id หรือ access token หมดอายุ
เมื่อนั้น hacker ก็จะหมดสิทธิสวมรอย
:
ในมุม user ก็แค่ล็อกอินใช้งานอย่างเดียว
ไม่ต้องสนใจ access token เบื้องหลังเลย
แต่ถ้าเป็น #โปรแกรมเมอร์ ต้องคำนึงถึงเป็นพิเศษ
เพราะขนาดสี่ตีนยังรู้พลาด นักปราชญ์ยังรู้พลั้ง
ยักษ์ใหญ่สุด พี่เบิ้มอย่าง facebook
ยังพลาดปล่อยให้ access token หลุดออกมาได้เลย จนเป็นข่าวสะเทือนใหญ่โต
.
👌 ด้วยเหตุนี้การเขียนโปรแกรม
ก็ขอให้คำนึงถึงเรื่อง access token ห้ามหลุดรอด
ให้ปลอดภัยจาก hakcker เป็นดีที่สุด
โชคดีทุกท่านครับ
:
:
เขียนโดย โปรแกรมเมอร์ไทย thai programmer
:
+++++++++++++
อ้างอิง
1) https://developers.facebook.com/…/h…/example_facebook_login…
2) https://developers.facebook.com/…/facebook-l…/access-tokens…
php session 在 吳老師教學部落格 Youtube 的最讚貼文
PHP與雲端資料庫教學總整理(2015)
完整連結:
http://terry55wu.blogspot.tw/2015/04/phpapp.html
最近開的課程其實都是可以相互整合的,
而這些可成都跟目前大數據時代的處理與應用有很大的關係,
其中有和APP開發有關的有 ANDROID APP開發與雲端實務應用2015
另外,如何和 APP的資料庫連結還有賴向PHP技術,
這方面的開課有 PHP雲端資料庫教學,
最近發表過的文章有 :
PHP雲端資料庫教學之1(打造PHP與MySQL環境)
PHP雲端資料庫教學之2(建立互動PHP網站)
PHP雲端資料庫教學之3(動態網頁如何傳遞引數GET與POST)
PHP雲端資料庫教學之4(PHP證照考題說明與表單設計)
PHP雲端資料庫教學之5(PHP證照102題環境與題目)
PHP雲端資料庫教學之6(建立MYSQL資料庫與SQL語法)
PHP雲端資料庫教學之7(PHP證照202題解題)
PHP雲端資料庫教學之8(用DW設計新聞公告專題使用者)
PHP雲端資料庫教學之9(用DW設計新聞公告專題管理者)
PHP雲端資料庫教學之10(用DW設計購物車01)
PHP雲端資料庫教學之11(用DW設計購物車02)
PHP雲端資料庫教學之12(用DW設計購物車03)
01_如何利用FOR迴圈輸出多選
02_如何利用FOR迴圈輸出多選(GET傳送)
03_PHP證照考題說明與表單設計說明
04_PHP證照考題說明與結果畫面
05_02_表單介面設計
06_表單設計細節與傳遞參數與接收
07_如何在表格中顯示接收到的變數
08_將換行轉成BR換行與PHP中文手冊
之後的課程還會在講有關PHP與MYSQL連解方面的課程,
也可以把EXCEL的資料匯入到MYSQL,可以利用PHP建立雲端資料庫,
可以當成是EXCEL和APP的共用資料庫,
對這部分有興趣的網路學員可以留意。
教完MYSQL之後,接下來就是利用DW CS6來建立動態資料庫網站,
亦即不用PHP程式也可以建立互動式網站,
但還是有點PHP程式會比較好理解邏輯。
PHP雲端資料庫教學之4(PHP證照考題說明與表單設計)
PHP雲端資料庫教學之5(PHP證照102題環境與題目)
參考書目
Dreamweaver CS6 X PHP超強互動網站特訓班(附影音教學、獨家擴充程式、範例、試用版)作者: 鄧文淵/總監製,文淵閣工作室/編著
挑戰PHP5/MySQL程式設計樂活學
作者: 文淵閣工作室 (著)
PHP 5實力養成暨評量(附光碟)
作者: 財團法人中華民國電腦技能基金會
php教學例子,php mvc教學,php ajax教學,資料庫,大數據,開放資料,XAMPP,Dreamweaver CS6,雲端資料庫,php mysql教學,html教學,php教學影片,php教學範例,php 安裝
![post-title](https://i.ytimg.com/vi/-zYyESZYxeM/hqdefault.jpg)
php session 在 吳老師教學部落格 Youtube 的最佳解答
ASP.NET 3.5程式設計第9次上課
這次上課主要是用實例解說ASP.NET提供的重要物件:
Cookie、Session、Applaction,也提到Response+Request+Server物件,
以上六個物件與ASP、JSP、PHP的使用是相同的,所以若能掌握以上六個物件,
對於未來處理其他網頁呈式有很大的幫助。
最後也補充非常重要的觀念,就是如何存取文字檔案,
我覺得這部分的重要性不會低於資料庫的存取,
以往一般人在學習成式的時候,都會以資料庫存取為目標,
但資料庫的存取對一般人來說,真的有點複雜,
光了解資料庫就很花時間,但相對文字檔非常簡易,
只要記事本就能產生。若是簡單資料,建議用文字檔即可,
例如計數器的總數,存在 Applaction 伺服氣重開機就消失,
存在資料庫又有點麻煩,若存成文字檔就非常適合。
但要如何讀寫文字檔呢?
1.宣告+引用FSO物件(其實他就是DLL檔)。
2.用FSO的OpenTextFile方法開啟文字檔。
3.讀取檔案內的文字到字串變數中。
4.變數+1
5.寫回去文字檔案。
6.記憶體中請除FSO物件。
以上是FSO物件的使用流程。課程影音:
01cookies新增&讀取
02coolie多鍵
03sessiond登入&登出
04Applaction物件計數器&Session
05將計算器改成圖檔
06用FSO開啟文字檔案
-------------------------------------------
01cookies新增&讀取
02coolie多鍵
03sessiond登入&登出
04Applaction物件計數器&Session
05將計算器改成圖檔
06用FSO開啟文字檔案
公告:
此影音課程謹提供本班學員復習用,非學校必須提供課程服務,
是老師私下提供,勿再向外傳送,若非學員請勿加入論壇,敬請悉知。
吳老師教學網:
http://3cc.cc/10g
部落格:
http://terry55wu.blogspot.com/
論壇:
http://groups.google.com/group/itctcaspnet?hl=zh-TW
YOUTUBE:
http://www.youtube.com/view_play_list?p=CB9790A2D1F998E3
ASP.NET 3.5,吳清輝老師,文化大學,推廣部,人力加值,程式設計,WEB2.0,線上教學
![post-title](https://i.ytimg.com/vi/7cCrmfmqLDE/hqdefault.jpg)
php session 在 吳老師教學部落格 Youtube 的精選貼文
ASP.NET 3.5程式設計第9次上課
這次上課主要是用實例解說ASP.NET提供的重要物件:
Cookie、Session、Applaction,也提到Response+Request+Server物件,
以上六個物件與ASP、JSP、PHP的使用是相同的,所以若能掌握以上六個物件,
對於未來處理其他網頁呈式有很大的幫助。
最後也補充非常重要的觀念,就是如何存取文字檔案,
我覺得這部分的重要性不會低於資料庫的存取,
以往一般人在學習成式的時候,都會以資料庫存取為目標,
但資料庫的存取對一般人來說,真的有點複雜,
光了解資料庫就很花時間,但相對文字檔非常簡易,
只要記事本就能產生。若是簡單資料,建議用文字檔即可,
例如計數器的總數,存在 Applaction 伺服氣重開機就消失,
存在資料庫又有點麻煩,若存成文字檔就非常適合。
但要如何讀寫文字檔呢?
1.宣告+引用FSO物件(其實他就是DLL檔)。
2.用FSO的OpenTextFile方法開啟文字檔。
3.讀取檔案內的文字到字串變數中。
4.變數+1
5.寫回去文字檔案。
6.記憶體中請除FSO物件。
以上是FSO物件的使用流程。課程影音:
01cookies新增&讀取
02coolie多鍵
03sessiond登入&登出
04Applaction物件計數器&Session
05將計算器改成圖檔
06用FSO開啟文字檔案
公告:
此影音課程謹提供本班學員復習用,非學校必須提供課程服務,
是老師私下提供,勿再向外傳送,若非學員請勿加入論壇,敬請悉知。
吳老師教學網:
http://3cc.cc/10g
部落格:
http://terry55wu.blogspot.com/
論壇:
http://groups.google.com/group/itctcaspnet?hl=zh-TW
ASP.NET 3.5,吳清輝老師,文化大學,推廣部,人力加值,程式設計,WEB2.0,線上教學
![post-title](https://i.ytimg.com/vi/brXZEAzpAD0/hqdefault.jpg)
php session 在 PHP+MySQL網站程式免費入門教學課程25-使用 ... - YouTube 的推薦與評價
![影片讀取中](/images/youtube.png)
... 本次內容概要:00:00 準備 PHP 登入表單form01:13 製作 PHP 檢查登入資料功能內容03:21 PHP $_SESSION講解和應用04:30 檢查用戶有沒有 SESSION 變數 ... ... <看更多>
php session 在 php-src/session.c at master - GitHub 的推薦與評價
php -src/ext/session/session.c ... This source file is subject to version 3.01 of the PHP license, | ... https://www.php.net/license/3_01.txt |. ... <看更多>
php session 在 [基礎課程] PHP SESSION 與COOKIE - 洛奇的邪惡組織手札 的推薦與評價
本篇介紹PHP 能跨網頁的共用變數,如果有一些變數希望能跨(同網站)網頁彼此共用,就能用session 跟cookie。請開始在Web 目錄下新增 ... ... <看更多>