1 1.1 CGI CGI(Common Gateway Interface) CGI CGI CGI Perl Ruby CGI HTML Ruby 2 CGI ( ) HTTP(Hypertext Transfer Protocol) httpd UNIX OS Apache Apache Ap



Similar documents
Page 2 of 7 <input>フォーム 部 品 フォーム<form> 内 のテキスト 入 力 や 実 行 ボタンなどの 各 フォーム 部 品 を 表 示 します 下 記 の type 属 性 の 値 によって 見 栄 えも 動 作 も 異 なる 部 品 となります type 属 性 text

C G I 入 門 講 座

簡単なHTMLファイルを作ろう

コンピュータサイエンス 4. ウェブプログラミング

HTTP Web Web RFC2616 HTTP/1.1 Web Apache Tomcat (Servlet ) XML Xindice Tomcat 6-2

1"

オンラインテスト

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

コンピュータサイエンス 1. ウェブの基本

(1) <html>,,,,, <> ( ) (/ ) (2) <!DOCTYPE html> HTML5 (3) <html> HTML (4) <html lang= ja > html (ja) (5) JavaScript CSS (6) <meta charset= shift jis >

講 義 内 容 前 回 の 提 出 課 題 の 解 答 例 復 習 データを 送 信 するための HTML (フォーム) PHPによるフォームデータの 処 理 2

~モバイルを知る~ 日常生活とモバイルコンピューティング

文京女子大学外国語学部

Copyright 2006 Mitsui Bussan Secure Directions, Inc. All Rights Reserved. 3 Copyright 2006 Mitsui Bussan Secure Directions, Inc. All Rights Reserved.

Microsoft PowerPoint ppt

HTML web HTML HTML

1. URL (Uniform Resource Locator) n プロトコル (http, https, ftp, mailto) 2. ドメイン 名 (FQDN) ホストの 識

橡5.PDF


: 1/15( ): HTML web page (2) 1/18( ): (1) 1/25( ): (2) 1

~モバイルを知る~ 日常生活とモバイルコンピューティング

GulfStar1.5ユーザーマニュアル

Microsoft Word - chap5.doc

スライド 1

PowerPoint プレゼンテーション

Microsoft PowerPoint asp cgi.pptx

方程式を解いてみよう! C++ から PHP + JavaScriptへ

So-Cool CART マニュアル

■新聞記事

JavaScriptプログラミング入門

スマートアヴェニュー ご利用マニュアル CGI編

●70974_100_AC009160_KAPヘ<3099>ーシス自動車約款(11.10).indb

おすすめページ

¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥ß¥ó¥°ÆÃÏÀ

54 5 PHP Web hellow.php 1:<?php 2: echo "Hellow, PHP!Y=n"; 3:?> echo PHP C 2: printf("hellow, PHP!Y=n"); PHP (php) $ php hellow.php Hellow, PHP! 5.1.2

この 例 では $time と$datestring の 値 を print 文 によって 表 示 させている 前 後 に <P></P>を 書 いているが これによって HTML の 形 式 に 合 うようににしている ( 実 際 は <P>を 省 略 してもうまく 表 示 される ) この 例

~モバイルを知る~ 日常生活とモバイルコンピューティング

2. HTML csh AWK AWK 1., 2., 3. 2 HTML HTML HyperText Markup Language WWW WWW (.html

Web Servlet/JSP JSP


Microsoft PowerPoint - webapp.ppt [互換モード]

Apache on CLUSTERPRO for Linux HOWTO


Ruby 50 Ruby UTF print, \n [Ruby-1] print("hello, Ruby.\n") [Ruby-2] Hello, Ruby. [Ruby-3] print("hello, \"Ruby\".\n") 2 [Ruby-4] seisuu = 10 pr

JavaScript Python

インターネットマガジン2001年3月号―INTERNET magazine No.74

サーバサイドスクリプトPHPを実感しよう


WEB DB PRESS Vol.1 65


橡ホームページの作り方

main.dvi

もくじ

25 About what prevent spoofing of misusing a session information

( ) Shift JIS ( ) ASCII ASCII ( ) 8bit = 1 Byte JIS(Japan Industrial Standard) X 0201 (X ) 2 Byte JIS ISO-2022-JP, Shift JIS, EUC 1 Byte 2 By

¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥ß¥ó¥°ÆÃÏÀ

shio_ PDF

第3回_416.ppt

wide94.dvi

comp -MYPEDIA Programing- Ruby 1 attr_accessor :< 1>, :< 2> class Car def = carname end attr_accessor :name end car = Car.ne

演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください (Z ドライブとして使用できます ) 講義で使うフォルダ 2/23

h1,..., h6: (heading) h1 h2 table: table tr (table row) tr td (table data) ol, ul: (ordered) (unordered) </tag1> </tag4> 1: HTML [1] html: Web HTML he

インターネットマガジン1999年2月号―INTERNET magazine No.49

untitled

インターネットマガジン1996年3月号―INTERNET magazine No.14

演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください (Z ドライブとして使用できます ) Web プログラミング 1 CGI (3 章 ) 2012/6/12( 水 ) 講義

1 moodle zip

あいち電子自治体ガイドライン(第1章)

第2回_416.ppt

writing_plugins_options.ppt

H10-3 placeholder 未 入 力 時 <textarea title="title " placeholder="placeholder "></textarea> placeholder title +placeholder + 各 input typeの 読 み 上 げ 例 tit

Blojsom におけるクロスサイトスクリプティングの脆弱性

¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥ß¥ó¥°ÆÃÏÀ


ii II Web Web HTML CSS PHP MySQL Web Web CSS JavaScript Web SQL Web

WebOS aplat WebOS WebOS 3 XML Yahoo!Pipes Popfry UNIX grep awk XML GUI WebOS GUI GUI 4 CUI

5-5_arai_JPNICSecSemi_XssCsrf_CM_ PDF

Servlet JSP JSP Servlet/JSP における 日 本 語 の 処 理 - 1

ohp.mgp

soturon2013

html ソース <HTML> <HEAD> <META charset="cp932" /> <TITLE>MPC 通 信 サンプル</TITLE> <SCRIPT src=" <SCRIP

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する

『HTML5プロフェッショナル認定資格 レベル1 教科書』サンプルPDF

0序文‐1章.indd

…l…b…g…‘†[…N…v…“…O…›…~…fi…OfiÁŸ_

pdf

Mac Web AppleScript AppleScript CGI CGI Macintosh AppleScript CGI MacOS CGI CGI (Common Gateway Interface) web UNIX web CGI Web UNIX CGI CGI FORM Web


Microsoft PowerPoint pptx

Microsoft PowerPoint - Kansaipm2002_5_11.ppt

Microsoft Word - SUGIJ2008_舟尾暢男.doc

Microsoft PowerPoint - 情報システム pptx

( )!?

IIJ Webスタンダードサービス

So-Cool CART マニュアル

key

r2.dvi

Webデザイン論

Microsoft PowerPoint Perl講習会.ppt [互換モード]

Transcription:

20 12 19 CGI CGI CGI 1 2 1.1 CGI............................................ 2 2 2 3 CGI 2 3.1.......................................... 2 3.2 CGI.......................................... 3 3.3........................................ 3 3.4 CGI......................................... 5 4 5 4.1............................................. 5 4.2..................................... 6 4.3......................................... 7 4.4 URL.......................................... 7 5 CGI 9 5.1................................ 9 5.2 CGI............................................ 10 6 CGI 11 6.1......................................... 12 6.2........................................... 12 6.3......................................... 12 6.4...................................... 12 6.5 MVC............................................ 12 6.6 CGI......................................... 13 7 13 1

1 1.1 CGI CGI(Common Gateway Interface) CGI CGI CGI Perl Ruby CGI HTML Ruby 2 CGI ( ) HTTP(Hypertext Transfer Protocol) httpd UNIX OS Apache Apache Apache /etc/httpd/conf/httpd.conf 1 cgi cgi-script 2 AddHandler cgi-script.cgi cgi public html CGI <Directory /home/*/public_html> AllowOverride All Options MultiViews SymLinksIfOwnerMatch ExecCGI </Directory> Directory ExecCGI CGI public html cgi-bin <Directory /home/*/public_html> AllowOverride All Options MultiViews SymLinksIfOwnerMatch </Directory> <Directory /home/*/public_html/cgi-bin> Options ExecCGI </Directory> httpd $ sudo /etc/init.d/httpd restart CGI 3 CGI 3.1 public html 1 /usr/local/apache2/ 2 2

List 1: Hello cgi print "Content-type: text/html\n\n"; print "<html><body><h1>hello CGI </H1></body></html>\n"; hello.cgi 755 $./hello.cgi Content-type: text/html <html><body><h1>hello CGI </H1></body></html> CGI public html URL http://server/~username/hello.cgi Hello CGI 3.2 CGI CGI http://server~/username/hello.cgi CGI ExecCGI CGI CGI Content-type: text/html( ) HTML HTML hello.cgi <html><body><h1>hello CGI </H1></body></html> Content-type: text/html\n\n HTML CGI CGI Content-type: image/gif\n\n gif 3.3 HTML ( ) CGI for List 2: for print "Content-type: text/html\n\n"; print "<html><body>\n"; print "<ul>\n" for i in 1..10 print "<li>" + i.to_s + "\n"; end print "</ul>\n" print "</body></html>\n"; 3

csv apple,100,5 banana,150,15 orange,120,8 data.csv List 3: print "Content-type: text/html\n\n" print "<html><body>\n" print "<table border=1>" print "<tr><td>name</td><td>price</td><td>quantity</td><td>subtotal</td></tr>\n" f = open("data.csv","r") total = 0 f.each{ line line.chomp! a = line.split(/\s*\,\s*/) name = a[0] price = a[1] num = a[2] subtotal = a[1].to_i * a[2].to_i total+= subtotal print "<tr>" print "<td>" + name + "</td>" print "<td>" + price + "</td>" print "<td>" + num + "</td>" print "<td>" + subtotal.to_s + "</td>" print "</tr>\n" } print "</table>\n" print "Total = " + total.to_s print "</body></html>\n" a = line.split(/\s*\,\s*/) a[2] 5\n line.chomp! chomp %./data.cgi Content-type: text/html <html><body> <table border=1><tr><td>name</td><td>price</td><td>quantity</td><td>subtotal</td></tr > <tr><td>apple</td><td>100</td><td>5 </td><td>500</td></tr> <tr><td>banana</td><td>150</td><td>15 </td><td>2250</td></tr> <tr><td>orange</td><td>120</td><td>8 4

</td><td>960</td></tr> </table> Total = 3710</body></html> 3.4 CGI CGI CGI CGI CGI nobody 3 nobody nobody CGI nobody other executable ~/user1/ CGI user1 ~/user2/ user2 CGI 700 group other CGI require etc print "Content-type: text/plain\n\n" p Etc.getpwuid[0] List 4: nobody nobody group other writable( ) CGI 4 4 4.1 CGI CGI CGI HTML METHOD POST GET HTML <H2>GET </H2> <form method="get" action="./form.cgi"> <input name="name" size=30> <input type="submit" value ="submit"> </form> <H2>POST </H2> <form method="post" action="./form.cgi"> <input name="name" size=30> 3 nobody httpd apache www 4 777 5

<input type="submit" value ="submit"> </form> CGI List 5: print "Content-type: text/html\n\n" print "<html><body>" method = ENV[ REQUEST_METHOD ] if method == GET print "METHOD = GET: " + ENV[ QUERY_STRING ] + "\n"; else print "METHOD = POST: " + gets(nil) + "\n"; end print "</body></html>\n" GET ( hoge) submit URL form.cgi?name=hoge METHOD = GET: name=hoge POST URL form.cgi METHOD = POST: name=hoge 4.2 <form> method action method GET POST action CGI <form> </form> <input> type <input type="submit" value ="submit"> CGI 6

<input name="name" size=30> size <input type="checkbox" name="cb" value="dog">dog value cb=dog <input type="radio" name="rb" value="dog">dog name 4.3 CGI submit form action CGI name=value name1=value1&name2=value2 ( ) & GET form.cgi?name1=value1&name2=value2 URL 5 URL QUERY_STRING ruby ENV[ QUERY_STRING ] URL <a href="http://hoge/hoge.cgi?mode=viewall"> </a> CGI POST URL REQUEST_METHOD POST CONTENT_LENGTH POST GET URL name=%82%d9%82%b0 (SJIS ) URL URL ( &? ) ASCII 4.4 URL URL ruby CGI HTML <html><head><body> List 6: 5 google URL 7

<H1> </H1> <form method="post" action="./formetc.cgi"> <input name="name" size=30><br> <input name="hobby1" type=checkbox value=" "> <input name="hobby2" type=checkbox value=" "> <input name="hobby3" type=checkbox value=" "> <BR> <input type="radio" name="job" value=" " checked> <input type="radio" name="job" value=" "> <input type="radio" name="job" value=" "> <BR> <select name="area"> <option value="tokyo"> </option> <option value="osaka"> </option> <option value="nagoya"> </option> </select> <BR> <input type="password" name="pass" ><BR> <BR> <BR> <textarea name="comment" cols="50" rows="5"> </textarea> <P> <input type="submit" value ="submit"><input type="reset" value ="reset"> </P> </form></body></html> CGI List 7: 8

require cgi print "Content-type: text/html\n\n" print "<html><body>" cgi = CGI.new hash = cgi.params hash.each_key{ key print key + " = " + hash[key].to_s + "<BR>\n" } print "</body></html>\n" cgi = CGI.new CGI 6 CGI CGI::params hash = cgi.params hash[ name ] hash[ pass ] 5 CGI CGI CGI CGI 5.1 CGI (Cross Site Scripting, XSS) CGI HTML JavaScript <script>alert("alert")</script> submit Javascript CGI <script type="text/javascript"> window.onload =function(){ document.write(" "); } </script> CGI URL ( ) CGI 7 < > CGI CGI::escapeHTML < > < > CGI List 8: 6 Ruby CGI.new.params.each key{... 7 CGI.htaccess 9

require cgi print "Content-type: text/html\n\n" print "<html><body>" cgi = CGI.new hash = cgi.params hash.each_key{ key print key + " = " + CGI.escapeHTML(hash[key].to_s) + "<BR>\n" } print "</body></html>\n" CGI::escapeHTML CGI 8 5.2 CGI 1. ( ) 2. 3. CGI mode mode confirm regist hidden input CGI List 9: 1 2 require cgi 3 FILENAME="log.dat" 4 5 def view 6 print <<EOS 7 <hr> 8 <form action="./bbs.cgi" method="post"> 9 <input name="name" size="10"><br> 10 <input name="comment" size="50"><br> 11 <input type="submit" value="submit"> 12 <input type="reset" value="reset"> 13 <input type="hidden" name="mode" value="confirm"> 14 </form> 15 <hr> 16 EOS 17 f = open(filename,"r") 18 print "<ul>\n" 19 f.readlines.reverse.each{ line 20 line.chomp! 21 a = line.split(/<>/) 22 name = a[0] 23 comment = a[1] 24 print "<li>" + name + " " + comment + " \n" 25 } 26 print "</ul>\n" 27 end 8 CGI 10

28 29 def confirm(cgi) 30 name = CGI.escapeHTML(cgi.params[ name ][0]) 31 comment = CGI.escapeHTML(cgi.params[ comment ][0]) 32 print " <BR>\n" 33 print " = " + name + "<BR>\n" 34 print " = " + comment + "<BR>\n" 35 print "<form action=\"./bbs.cgi\" method=\"post\">\n" 36 printf "<input type=\"hidden\" name=\"name\" value=\"%s\">\n",name 37 printf "<input type=\"hidden\" name=\"comment\" value=\"%s\">\n",comment 38 print <<EOS 39 <input type="hidden" name="mode" value="regist"> 40 <input type="submit" value="submit"> 41 </form> 42 EOS 43 end 44 45 def regist(cgi) 46 f = open(filename,"a") 47 name = CGI.escapeHTML(cgi.params[ name ][0]) 48 comment = CGI.escapeHTML(cgi.params[ comment ][0]) 49 f << name << "<>" << comment << "\n" 50 f.close() 51 print " <BR>\n" 52 print "<a href=\"./bbs.cgi\"> </a>" 53 end 54 55 cgi = CGI.new 56 mode = cgi.params[ mode ][0] 57 58 print "Content-type: text/html\n\n" 59 print "<html><body>" 60 if mode == "confirm" 61 confirm(cgi) 62 elsif mode == "regist" 63 regist(cgi) 64 else 65 view() 66 end 67 print "</body></html>\n" submit hidden mode confirm CGI HTML <html><body> <BR> = <BR> = <BR> <form action="./bbs.cgi" method="post"> <input type="hidden" name="name" value=" "> <input type="hidden" name="comment" value=" "> <input type="hidden" name="mode" value="regist"> <input type="submit" value="submit"> </form> </body></html> CGI hidden submit mode regist 6 CGI CGI 11

6.1 hidden HTML hidden HTTP REFERER 6.2 CGI Shift JIS EUC JIS UTF-8 Ruby Kconv NKF require kconv String tojis toeuc tosjis tosjis Shift JIS XML UTF 6.3 File flock f = File.open(filename,"a") f.flock(file::lock_ex) # # f.flock(file::lock_un) # 9 6.4 log.dat.htaccess.htaccess cgi cgi CGI 6.5 MVC CGI HTML CGI MVC HTML CGI (C) (V) 9 12

def get_replaced_text(filename,hash) f = open(filename) lines = f.read hash.each_key{ key if key!=nil and hash[key]!= nil id = %% + key + %% lines.gsub!(id,hash[key]) end } return lines end ID => 1 name => watanabe List 10: %%ID%% 1 %%name%% watanabe YAML XML 6.6 CGI CGI 500 Internal Error 10 CGI URL Ruby CGI require cgi name1=value1 name2=value2... ^D = ( ) ˆD ( +D) URL name1= name2= test.dat List. 6 $./formetc.cgi <test.dat Content-type: text/html <html><body>name1 = <BR> name2 = <BR> </body></html> URL 7 CGI Cookie 10 CGI 13