永続的なプライベート変数のテスト

永続的なプライベート変数のテスト use strict; use warnings; use 5.010; my $n; sub marine1{ $n++; print "Hello$n "; } sub marine2{ state $e = 0; print "Hello $e"; $n += 1; } marine1; marine1; marine1; marine1; marine1; marine1; marine1; prin…

パラメータリストについて

パラメータリストについて use strict; use warnings; sub max{ if (@_ != 2) { print "true"; } } my $maximum = maximum(3,5,10,4,6); print $maximum; sub maximum{ my($max_so_far) = shift @_; foreach (@_){ if($_ > $max_so_far){ $max_so_far = $_; …

splict演算子について

splict演算子 use strict; use warnings; my @array = qw(pebbles dino fred barney betty); my @removed = splice @array, 2; print @removed . "\n"; print @array; 以下、出力結果となります。 3 pebblesdino

レキシカル関数について

レキシカル変数について use strict; use warnings; foreach(1..10){ my($square) = $_ * $_; print "$_ squared is $ square \n"; } #以下で宣言している岩の名前はforeachの中でしか利用できない。 foreach my $rock(qw/bedrock slate lava/){ print "One …

初めてのPerl 第4章

サブルーチン use strict; use warnings; use Data::Dumper; my $n; my $fred = 11; my $barney = 6; sub marine{ $n += 1; print "hello $n"; } sub sum_of_fred_and_barney{ print "hey!!"; $fred + $barney; } my $c = &sum_of_fred_and_barney; print "\…

初めてのPerl 第3章 ver2

本日の作業内容 初めてのperl(配列、サブルーチン) 以下本日行ったテストコードと、その出力結果です。 配列 use strict; use warnings; use data::dumper; my @fred; $fred[99] = "blue"; $fred[0] = "takeshi"; $fred[1] = "takurou"; $fred[2] = "mika"…

初めてのPerl 第3章

ユーザーが入力したものをリストに格納して、入力終了時に逆出力する。 use strict; use warnings; use Data::Dumper; my @lists = <STDIN>; my $counts = 0; foreach my $line (reverse @lists) { print $line; } 表示結果は以下のような表示になりました。 a b c </stdin>…

初めてのPerl 第2章

初めてのPerl HelloWorldを表示させてみる。 use strict; use warnings; print "HelloWorld\n"; 半径12.5センチの円の円周を求める。 my $radius = 12.5; my $pi = 3.14; print 2 * $pi * $radius ; ユーザーに半径を入力してもらって計算結果を出力する。 m…

アクセス制御や認可制御の欠落

アクセス制御や認可制御の欠落 現在公開されているウェブサイトの中には、運営者の認識のなさから、不適切な 設計で作成されたまま運営を続けているものが存在しています。 公開の際などは以下の2点に注意し、コンテンツの公開などを行うべきです。 アクセス…

メールヘッダ・インジェクション

メールヘッダ・インジェクション ウェブサイトによっては利用者が入力下した内容を特定のメールアドレスへ 配信するシステもあります。 メールアドレスは固定となり、管理者以外からの変更ができないようになっていますが、 実装によっては利用者が任意のア…

HTTPヘッダ・インジェクション

HTTPヘッダ・インジェクション ウェブアプリケーションはリクエストに対して出力するHTTPレスポンスヘッダのフィールド値を 外部から渡されるパラメータの値等を利用して、動的に生成するものがあります。 (例:パラメータから取得したURL情報をLocationヘ…

クロスサイト・リクエスト・フォージェリ

CSRF(クロスサイト・リクエスト・フォージェリ) ウェブサイトはログイン機能を持ったものが多々存在します。しかし、ログインした 利用者からのリクエストについて、利用者が意図したリクエストであるかを識別できる 仕組みを持たないサイトは、外部サイト…

クロスサイトスクリプティング

クロスサイト・スクリプティング 検索キーワードの表示画面や、個人情報入力/登録時の確認画面等、利用者からの入力内容や HTTPヘッダの情報を処理しウェブページ上に表示されるものがあり、ウェブページへの出力の 際に、問題がある場合スクリプトを埋め込…

セッションハイジャック

セッション管理の不備 ウェブアプリケーションによっては、セッションIDをユーザーに付与することで、 管理を行っているサイトもあり セッションIDに不備がある場合、悪意のある第三者に不正に取得され、その利用者に なりすま し、利用されてしまう可能性が…

ディレクトリトラバーサル

パス名パラメータの未チェック/ディレクトリトラバーサル 本来は利用するユーザーには、閲覧できないようにしなければいけないファイルなどが ブラウザから直接ファイル名を指定することで閲覧できてしまう等の現象です。 発生する可能性のある脅威 サーバー…

OSコマンド・インジェクション

OSコマンド・インジェクション 外部からの攻撃により、OSコマンドを不正に実行されてしまう問題を持つ可能性があります。 発生する可能性のある脅威 サーバー内のファイル閲覧/改ざん/削除 システム操作 不正なプログラムのダウンロード/実行 他のシステムへ…

SQLインジェクション

SQLインジェクション 利用者からの入力情報を元に、SQL文を構築している場合、SQL本文に問題があると 悪意を持った第三者に不正に利用される可能性があります。 発生する可能性のある驚異 データベースに格納されている情報の閲覧 データベースへの情報変更/…

12月6日本日行ったこと

本日の作業 Perlの基本文法学習 NeoBundleのインストールcsideさんのブログ参考 Puttyの半透明化 過去ブログの修正 セキュリティについて perlの基本文法は過去ブログに記載済しています。 NeoBundleのインストール $ cd ~/.vim $ git clone https://github.…

サブルーチン 改良

#19 サブルーチンを改良してみよう use warnings; use strict; # サブルーチン sub max{ my $max = shift(@_); #@_ foreach (@_) { $max = $_ if $_ > $max; } return $max; } print max(2,8,100,23,46); サブルーチンを作成。 一番大きい値が表示されるよう…

サブルーチン

#18 サブルーチンを作ってみよう use warnings; use strict; # サブルーチン sub max{ my $max = $_[0]; if($_[1]>$max){ $max = $_[1]; } return $max; } print max(2,8); subでサブルーチンの処理を記述する。 returnなしでもできるが、推奨しない。 8 値…

正規表現

#17 正規表現を使ってみよう use strict; use warnings; # ファイル出力 # 正規表現 open(my $in, "<" , "test.dat" ) or die ("could not open file."); while(<$in>){ $_ =~s/123/わん/; print $_; } close($in); 以下の結果に置換された。 abc def ghi わ…

ファイルからの出力、ファイルへの出力

#16 ファイルを扱ってみよう あらかじめテストファイルを作成しておく # test.dat abc def ghi 123 456 789 上記ファイルの内容を取得する use strict; use warnings; # ファイル出力 open(my $in, "<" , "test.dat" ) or die ("could not open file."); whi…

ハッシュのループ処理

#15 ハッシュのループ処理をしてみよう use strict; use warnings; # ループ処理(foreach) my %sales = ("tanaka"=>150,"suzuki"=>300,"ohira"=>200); foreach my $key (keys(%sales)){ print"sales for $key is $sales{$key}\n"; } sales for ohira is 20…

配列のループ処理

#14 配列のループ処理をしてみよう use strict; use warnings; # foreach my @colors = qw(red green blue orange pink); foreach (@colors){ print "color = $_\n"; } use strict; use warnings; # foreach my @colors = qw(red green blue orange pink); f…

while、loop処理

#13 繰り返し処理をしてみよう use strict; use warnings; # ループ処理 my $i = 0; while($i < 10){ print "i= $i \n"; $i++; } # for for(my $i = 0; $i <= 10; $i++){ print "i= $i \n"; } i= 0 i= 1 i= 2 i= 3 i= 4 i= 5 i= 6 i= 7 i= 8 i= 9 i= 0 i= 1 …

if文を短く書く方法

#12 if文の別の書き方について use strict; use warnings; my $score =80; if ($score >= 80){ print("OK!"); } print ("OK!") if ($score >= 80); # 三項演算子 if...else... # (条件) ? 値1:値ぃ? my $a=10; my $b=20; my $max =($a > $b) ? $a : $b;…

条件分岐3

#11 さらに条件分岐をしてみよう e strict; use warnings; my $score = 30; if ($score >= 80){ print("OK!"); }elsif($score >= 40){ print ("not ok..."); }else{ print("tanaka the test again!"); } tanaka the test again! と表示されることを 確認

条件分岐2

#10 条件分岐をしてみよう (2) use strict; use warnings; # 文字列比較演算子: eq ne gt lt ge le : 0-9<A-Z<a-z my $score = 85; my $name ="Luke"; if(($name eq "Luke") && ($score<=88)){ print("I am your father!!"); } if($score >= 80){ print("OK!?"); } I am your father!!OK!? と表示されることを確認。</a-z<a-z>

条件分岐1

#09 条件分岐をしてみよう (1) use strict; use warnings; my $score = 85; if($score >= 80){ print("OK!"); } OK! と表示されることを確認

ハッシュ変数

#08 ハッシュ変数を使ってみよう use strict; use warnings; # ハッシュ変数 : キーと値 : % my %sales =("tanaka"=>200,"komikado"=>1,"tamukai"=>20000); print $sales{"tanaka"}; 200 と表示されることを確認。 ここでも取り出した値は、配列型変数のとき…