PHP 板


LINE

看板 PHP  RSS
※ 引述《st1009 (前端攻城師)》之銘言: : 不好意思,我初學php加設網頁後台, : 想詢問一些關於php的基本問題>///< : 1. : 請問php的一個變數內部可以融納下多少位字元,我在查這個時都查到整數(int)的~__~ : 如果我設定 $x = $_POST["x"]; 讓使用者輸入字串, : 使用者輸入字串超出變數可以融納下的範圍php會如何處理? 不同資料型態不能一概而論,也不建議去挑戰這種事情。 不過以字串來說.. https://secure.php.net/manual/en/language.types.string.php 「Note: string can be as large as up to 2GB」 字串長度上限是2GB,我想應該大多數情況下你不用擔心有人 post 2GB 的東西進來... 陣列在記憶體夠的前提下,我平常用的時候百萬或千萬之類的數量也沒啥問題 同樣的我想你應該也不用擔心有人 post 一千萬個欄位進來... 在你碰到這麼大的資料之前,通常你會先因為記憶體不夠而整隻 script 死掉。 : 2. : 我看網路上有的網址為.php?id=1 : 有的甚至可以直接在URL列登入帳號密碼, : 請問這個運作過程為何?為何能實現? : 再自行架設的網站內試圖於URL登入,但都失敗QAQQQ 「登入」的意思是「記住這個人是誰」,至於是 post 或 get 都跟「記住」這件事無關 記住的方法可以用 session,也可以用 cookie。 程式流程大概會像這樣 - 檢查帳號密碼對不對 - 對了,做一個記住的動作 - 錯了,做一個顯示錯誤訊息的動作 當然了,登出也就是「忘掉」,把「我是誰」這件事從 session/cookie 裡面砍掉 不過 cookie 是使用者可以亂改的東西,使用時請注意 但是講到這個用網址登入...假設你可以可以用網址直接登入,那麼 - 瀏覽器的歷史會記住這個帳號密碼 - 你後面的人會看到網址列的帳號密碼 - Google 可能會記住這個帳號密碼 - 我可以搜尋「inurl:www.example.com/login.php」直接爬出一大堆 - 各種奇怪爬網址的 bot 可能會抓到這個帳號密碼 不要、不要、不要用 get 傳帳號密碼 登入時傳帳號密碼請用 post : 3. : 我看見訪間有一種網頁攻擊方式為xss攻擊, : 再自行架設後的留言板中進行測試, : 發現如果我直接輸入<script>標籤他會產生反應, : 但是當輸入: : &#60&#115&#99&#114&#105&#112&#116&#62&#97&#108&#101&#114&#116 : &#40&#39&#104&#97&#99&#107&#101&#100&#39&#41&#60&#47&#115&#99 : &#114&#105&#112&#116&#62 : 卻是以字串方式呈現,是否xss攻擊無法由10進制html代碼,甚至其他代碼執行, : 只要我過濾掉了'<'和'>'就不須當心xss了? https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet 這一整頁長長的都是 XSS 的方法,裡面有很多不用直接打 <> 實際上到底要怎麼防禦才完善要 case by case 去看 - html 的內文要靠 htmlspecialcahrs() 去洗 - 如果你還想讓使用者自己輸入 html,自己擋會擋不完...請參考 html purifier - javascript(咳)通常可以靠 json_encode() 去洗 - 網址...恩...這有點難搞... : 4. : 聽說要擋住sql injection 只要使用magic quotes就可以了(? : magic quotes後來不被php自動執行請問是有什麼副作用?如何避免? 不要用 magic quotes,這是上個世紀留下來的失敗功能 - 你會拿不到原始的使用者輸入資料 - 稍微不小心一點,你就會把「It's Friday」存檔成「It\'s Friday」 - 對於有經驗的攻擊者以及設計良好的 bot,magic quote 毫無用處。 所以 PHP 三年前把這功能拔掉了。 現代推薦的正確做法,是使用 PDO 跟 prepared statement $db = new PDO($dsn, $db_user, $db_password); $stmt = $db->prepare("SELECT nick_name FROM users WHERE uid = ? LIMIT 1"); $stmt->execute([$uid]); // 這邊就算 uid 被塞了髒東西也不用怕 $result = $stmt->fetch(); echo is_array($result) ? "我是" . $result['nick_name'] : "查無此人"; -- 莉娜用魔法爆破進入屋內。 劫犯從另一個房間裡出現,大叫道︰「妳是誰!」 莉娜︰「我是個可疑的女人!」 劫犯無言以對。 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.80.218
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1446058193.A.AA3.html ※ 編輯: GALINE (114.27.80.218), 10/29/2015 03:18:26
1F:推 y2468101216: 推這篇 10/29 16:37
2F:推 xdraculax: 真的需要存長字串還是要查一下memory_limit比較好,4年 10/29 21:36
3F:→ xdraculax: 前在某遊戲公司改後台,它字串最長只能200KB... 10/29 21:36
4F:→ dlikeayu: nosql+json request parse才是長久之計 10/30 04:06
5F:→ dlikeayu: 跟交易模式比較有關的或真的需要ACID定義的再用SQL 10/30 04:10
6F:推 st1009: 專業詳細,感謝您(≧<>≦) 10/30 23:18







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP