第十八章使用SQL整合网页与资料库.ppt

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十八章使用SQL整合网页与资料库

小秘訣 使用 ASP 整合資料庫時,可參考下列小秘訣 資料庫內的資料表名稱及欄位名稱,最好是英文,且中間不可留白。 欄位名稱最好複雜一點,以免和資料庫的內建關鍵字相衝。 文字欄位的預設值最好是空字串,不要不設定預設值。 在 Access 內,除非你的欄位資料量超過255個字元,否則盡量不要用到 memo 欄位,因為 memo 欄位不支援排序,也不支援萬用字元(如「*」或「?」等)。 */69 萬用字元 在 Access 內執行 SQL 指令時,有兩個最重要的萬用字元 「?」:比對一個字元 「*」:比對多個字元 說明 若要在 ASP 的程式碼內使用 SQL 的萬用字元,必須將「?」改為「_」,「*」改為「%」,以符合一般 SQL 語言的標準規範。 */69 18-5:資料隱碼(SQL Injection) 本小節介紹各種因為ASP與資料庫整合時的疏失,使得他人可以使用非法途徑來取的資料庫內容,或者進行其它侵入。 */69 SQL Injection簡介 「資料隱碼」(SQL Injection)臭蟲,簡單地說,就是將「帳號」和「密碼」欄位填入具有單引號的特殊字串,造成伺服器端在接合這些欄位資料時,會意外地產生合格的 SQL 指令,造成密碼認證的成功。 要特別注意的是,SQL Injection 的問題不限只發生在哪種特定平台或語言,只要是使用 SQL 指令存取資料庫內的資料,都有可能產生這個問題。 */69 範例18-7(1) 主題:以資料庫內之資料進行密碼認證:基本篇 Webpage: remote host, local host 程式碼重點 說明 看起來一切沒問題,但是如果你想「駭」(Hack!) 這個網站,事實上只要輸入下列資料就可以了: 帳號:*****(亂打一通) 密碼: or a=a SQL = select * from password where userid= + Request(user) + and passwd= + Request(passwd) + ; */69 範例18-7(2) 說明 當輸入帳號和密碼分別是「林政源」和「gavins」時,可以從資料庫中查到一筆資料,代表帳號和密碼正確,所得到的 SQL 指令是 當帳號和密碼分別是「xyz」和「 or a=a」時,所產生的 SQL 指令也會執行成功(因為 a=a 是一定成立的) 在 SQL 語法的條件式中,會先執行 and,再執行 or。 SQL = select * from password where userid=林政源 and passwd=gavins; SQL = select * from password where userid=xyz and passwd= or a=a; */69 避免SQL Injection 最簡單的作法,就是在取用客戶端送進來的資料前,先刪除所有可能造成問題的特殊字元。 這些字元包括單引號(‘)、雙引號(“)、問號(?)、星號 (*)、底線(_)、百分比(%)、ampersand()等,這些特殊字元都不應該出現在使用者輸入的資料中。 刪除特殊字元的動作務必 要在伺服器端進行,因為用戶端的 JavaScript 表單驗證的檢查是只能防君子,不能防小人,別人只要做一個有相同欄位的網頁,就一樣可以呼叫你的 ASP 程式碼來取用資料庫,進而避開原網頁的表單驗證功能。 */69 範例18-8 主題:使用replace()避免 SQL Injection Webpage: remote host, local host 程式碼重點 說明 在上述原始碼中,因為 Request(userid) 和 Request(passwd) 的資料是無法修改的,所以在取代前要先存到另一個個變數。由此範例可以知道,只要刪除使用者輸入字串中的所有單引號,就可以避免 SQL Injection 的問題。 user = user.replace(//g, ); passwd = passwd.replace(//g, ); */69 SQL Injection 的有哪些信誉好的足球投注网站 在Google 打入「登入」,再對需要登入的網站進行 SQL Injection 的測試,就應該可以找到一些不設防的網站。 請通知該網站管理員,並表示自己無惡意: */69 我們研習張智星老師的「JavaScript程式設計與應用」,對網路上的網頁進行 SQL Injection 的測試,發覺您的登入網頁(網址是 http://xxx.xxx.xxx)並無法對抗 SQL Injection 的入侵,只要帳號任意設定、密碼設定為「 or a=a」,即可登入。 這是一封善意的信,我們僅測試是否可以登入,並未對資料進行任何修改,請查照

文档评论(0)

叮当文档 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档