小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

Perlノート

URLパラメータとGETパラメータの関係とは(バージョンアップ版)

URLパラメータは、ブラウザのアドレス欄に表示されるURLの「?」以降の文字列のことです(たぶん)。 GETパラメータは、form要素のmethod属性に"get"と指定してサブミットした時にアドレス欄に表示されるURLの「?」以降の文字列のことです(たぶん)。 通常、…

シーザー暗号を組んでみる!

先日ご紹介した『暗号化のお話 (1)』にシーザー暗号のことが書かれていました。 普通、暗号化は凄く数学的で難しいものですが、このレベルならまだ私でも理解ができたので、Perlで実装してみました。 ◆シーザー暗号とは 古来から伝わる暗号化の方式としてシ…

WEB脆弱性のインジェクションとは?

前回の『WEB脆弱性のインジェクションとは?』に『対策』を追記してみました。 - インジェクション(injection)の意味は、内部に何かを注入することです。 そして、WEB脆弱性のインジェクションには、以下の3つがあります。 SQLインジェクション OSコマン…

WEB脆弱性のクロスサイト・スクリプティングとは

普通CGIなどWebアプリケーションは、Webページから検索のキーワード入力や個人情報の登録入力などを処理して、Webページとして出力します。 ここで、Webページへの出力処理に問題があると、そのWebページにスクリプトなどを埋め込まれてしまうことがあります…

WEB脆弱性のディレクトリ・トラバーサル(Directory Traversal)とは?

「../../」のような相対パスを使用し、システム内の任意ファイルへアクセスする攻撃手法をディレクトリ・トラバーサルと言います。 システム内のディレクトリ間を自由に横断(トラバース)できることが攻撃名称の由来で、パス・トラバーサルとも呼ばれます。…

WEB脆弱性のインジェクションとは?

インジェクション(injection)の意味は、内部に何かを注入することです。 そして、WEB脆弱性のインジェクションには、以下の3つがあります。 SQLインジェクション OSコマンドインジェクション HTTPヘッダインジェクション つまり、SQL、OSコマンド、HTTPヘ…

HTTP Cookiesとは?

今回、セキュアなWEBの勉強ということで、HTTP Cookieをテストしてみました。 なにを今更…と思っているかもしれませんが、クッキーを知っているつもりでも、実は知らなかったりしますよ。 なのでとりあえず、以下の2つをリンクしときます。 studyinghttp.ne…

『Perlのよいところ』バージョンアップ

当初、4個からスタートした『Perlのよいところ』が9個になりました。 Perlのよいところ - 燈明日記 これ、『基礎文法最速マスターシリーズ』のように他の言語で『xxx言語のよいところ』が出てくるといいなぁとか思っています。 是非、言語のよいところを探し…

セキュアなSQL

テストでSQLインジェクションを体験しました。本当にDBがクリア出来てしまいました! ということで、以下の『安全なSQLの呼び出し方』をリンクしときます。 http://www.ipa.go.jp/security/vuln/documents/website_security_sql.pdf 尚、MS SQL Serverの…

Perlのよいところ

本格的にPerlをやり始めた2007/4から3年間が経ちました。 その間に感じたPerlのよいところを書きたいと思います。 その前に、私のPerl歴をちょっと…。 1996年頃からC言語によりCGIのプログラムを作る仕事をしてきました。 1998年に趣味でインターネットをは…

配列の代入と比較

Perlでの配列変数同士の代入は普通に出来ます。 代入先配列と代入元配列の関係は、代入すると代入先配列は代入元配列とイコールになります。 つまり、要素数も要素の並びも同じになりますね。 use strict; use warnings; local $, = ' '; my @aaa = (0, 1, 2…

想定外エラーはevalでキャッチ!

たとえば、PerlでCGIプログラムを組んでいるとします。 ご存知のようにWeb系では想定外のエラーが頻発します。 しかし、ブラウザにはCGIエラーと出るだけで、何のエラーで、何ライン(プログラムソース)で発生したかが分かりません。 そんな時は、ソースを…

漢字コードを指定したファイルコピー

ファイルをコピーするときに、コピー先のファイルの漢字コードを任意にしたい場合が結構あります。 コピー先のファイルは、ロジックで漢字コードが指定できますね。 しかし、コピー元のファイルの漢字コードが想定できない場合が結構あります。 そんな時のた…

ネットワークアドレスを求める!

たとえば、IPアドレス(IPv4)は32ビットで、32ビット内がネットワークアドレスとマシンアドレスになっています。 そして、IPアドレスをサブネットマスクするとネットワークアドレスが求まりますね。 つまり、任意のマシンが、どのネットワークアドレスに属…

パス名からファイル名を取得する

正規表現で一発ですね。 しかし、ディレクトリの区切りが『/』と『\』あるので、気をつけないとなりません。 標準モジュールBasenameを使うともっと簡単に出来ますね。 だた、Basenameモジュールのfileparse関数は、リストを返しますので小カッコでスライス…

s修飾子の威力

Perlでは、テキストの編集処理が非常にラクチンです。 これは、Perlの柔軟な言語仕様と正規表現のお陰です。 とにかく、一度でもこのラクチンを経験すると他の言語に戻れなくなりますね! 特に、テキストファイルの全内容を一行で扱うことのできる正規表現の…

無名ハッシュの威力

EXCELとかDBでは、データが表形式なっていて、行と列でデータにアクセスします。 行は配列で表現し、列はハッシュで表現するのが、まぁ普通だと思います。 たとえば、以下の表の感じです。 A列B列C列D列 1行0 1 2 3 2行0 1 2 3 3行0 1 2 3 4行0 1 2 3 まず、…

Perlでのコンパイル?

Perlは、インタプリタなのでコンパイルなどないと思っているかもしれませんが、実は、コンパイルもあるのです。 ただし、C言語のようにコンパイルで実行ファイルが出来るのではなく、インタプリタでもコンパイルフェーズと実行フェーズの2つに別れているの…

はじめてのPerlでつまずくこと

Perlで、たとえば、以下のソースを他の言語経験がはじめて見た時に、たぶん、?だと思います。 同じ変数名($aaa)が使われている違いは、なんだろう? リストを囲っている()、{}、[]の違いは、なんだろう? use strict; use warnings; my $aaa; my @aaa = (…

『Attribute::Protectedのソースを読んでみました!』を手直ししました!

以下をかなり手直ししました。 Attribute::Protectedのソースを読んでみました! - 燈明日記 もの凄く、Perlの勉強になりました。 励みにしますので、本ブログの応援クリックも、よろしくお願いします。

Attribute::Protectedのソースを読んでみました!

本ブログの読者の方からAttribute::Protectedモジュールを教えて頂いて、ソースを見たのですがチンプンカンプンだったので、少し調べてみました。 ちなみに、本モジュールは、Javaライクなアクセス修飾子(Public,Private,Protected)をPerlのsubに実装する…

Javaサーブレットでのクラスの修正

成り行きでプログラム歴30年以上あるのですが、実は、Javaの仕事にはご縁がありませんでした。 しかし、今回始めて、Javaサーブレットでのクラスの修正をしました! Eclipseでクラスのソースを修正して、上書きするとコンパイルまでも出来てしまう環境になっ…

Perlオブジェクト基礎文法最速マスター

Perl5でのオブジェクトの基礎を解説したいと思います。 Perlでのオブジェクト指向と言えば、モダンPerl系ではMooseモジュール等なのですが、今回は、あくまでも基礎編です。 Perlで最速にオブジェクトをマスターするには、まず、「リファレンス」と「use宣言…

基礎文法最速マスターカテゴリ

本カテゴリは、いろいろなプログラム言語等の入門レベルのコンテンツをまとめたリンク集です。 始めにid:perlcodesampleさんが『Perl基礎文法最速マスター』をまとめられたら…つぎからつぎへと他の言語のが出てきました。 沢山出てきたので、カテゴリにまと…

正規表現基礎文法最速マスター With Perl

Perlでの正規表現のサンプルと文法一覧です。 他の言語をある程度知っている人はこれを読めば正規表現の基礎をマスターして正規表現を書くことができるようになっています。 簡易リファレンスとしても少し利用できると思います。 他言語からの人は、正規表現…

基礎文法最速マスターぞくぞくキターーー!

本コンテンツは以下のリンク先が最新です。 基礎文法最速マスターカテゴリ - 燈明日記 id:perlcodesampleさんが『Perl基礎文法最速マスター』をまとめられたら…つぎつぎと他の言語のが出てきましたね! ちなみに、以下のリスト順は、ワタシがGoogleとYahooで…

基礎文法最速マスター

本コンテンツは以下のリンク先が最新です。 基礎文法最速マスターカテゴリ - 燈明日記 id:perlcodesampleさんが『Perl基礎文法最速マスター』をまとめられたら…つぎつぎと他の言語のが出てきましたね! Perl基礎文法最速マスターhttp://d.hatena.ne.jp/perlc…

Perlの基本の基礎が簡素によくわかる

以下のリンクは、ごく普通にPerlプログラミングする基本の基礎が、簡素に分かり易く、まとめられています(素晴らしい)。 Perl基礎文法最速マスターhttp://d.hatena.ne.jp/perlcodesample/20091226/1264257759 Perlでよく使用する関数・モジュール一覧http:…

WINDOWSでのシバン for Apache

UnixやLinuxのシェルやPerl等のスクリプトには、シバンという#!から始まる1行目にインタプリタ(実行ファイル)を指定します。 しかし、WINDOWSでは、拡張子に実行ファイル(インタプリタ)を関連付けていてシバンの必要ありません。 つまり、IISのCGIのPerl…

Perlでテキストファイル内の検索文字列がある行数を求めるには

たとえば、テキストファイルを読み込んで、とある文字列を検索し、それがヒットしたテキスト内の行数を求めたい場合があったとします。 以下は、そんな場合のサンプルです。 検索文字列『小池啓仁』があるテキスト内の行数を取得します。 ただし、このサンプ…