perlに関するpooh33のブックマーク (7)

  • 自己流のSQLインジェクション対策は危険

    HTMLエスケープの対象となる < > & " の4文字は、文字実体参照に変換された後、preg_replace関数でセミコロンを削除してしまうので、中途半端な妙な文字化けになりそうです。 一般的な原則としては、データベースにはHTMLの形ではなくプレーンテキストの形で保存しておき、HTMLとして表示する直前にHTMLエスケープする方法で統一することで、上記のような文字化けやエスケープ漏れをなくすことがよいでしょう。 脆弱性はないのか このsanitize関数に脆弱性はないでしょうか。上表のように、バックスラッシュ(円記号)を素通ししているので、MySQLや、設定によってはPostgreSQLの場合に、問題が生じそうです。以下、それを説明します。以下の説明では、MySQLを使う想定とします。 以下のように、ログイン処理を想定したSQL文組立があったとします。 $sql = sprintf(

  • Perlベストプラクティスのベストプラクティスじゃないやつをまとめてみた | おそらくはそれさえも平凡な日々

    Perlベストプラクティス Perlベストプラクティス(略してPBP)という良いがあります。僕自身もPerlを学ぶ過程で非常にお世話になったなのですが、以下の様なことが度々指摘されています。 bestって書いてあるけど「著者の」bestプラクティスなので偏りがあることも 「決して」とか「必ず」とかが多いけどあんま真に受けてはいけない このを書くために書かれたであろうCPANモジュールとかがあって、しかも公開されてないものまである 致し方ないけど現在の状況にマッチしない古い情報もある なので、PBPの何がベストじゃないのかについてまとめてみることにした。前からやりたかったんだけど、思い立ってやった。 まとめてみたら、思っていたほどには項目が上がってこなかったので、やっぱPBPは良いだなと改めて思いました。なので、このエントリーがこれからPBPを読む人の助けになれば良いなと思います。

    pooh33
    pooh33 2015/11/27
  • Perl入門ゼミ

    Perlプログラミングを学びたい人向けのPerl入門講座です。 Perlはテキスト処理に最適化されたプログラミング言語です。Linuxシステム管理、Web開発という分野でも大活躍。後方互換性、ライブラリの安定性、数多くのOSサポートに定評があります。 Perl入門 PerlのインストールPerlのインストール方法を解説。WindowsmacOS、Unix/Linux対応。 基礎文法最速マスターPerlプログラムの基のすべて 文字列処理Perlは文字列処理が得意。文字列の連結や文字列関数などを解説 if文による条件分岐if、elsif、elseの条件分岐の構文をマスターすれば、条件で処理を変えるPerlプログラムが書ける。 for文、while文による繰り返しfor文、while文と繰り返し構文を覚えれば、Perlで繰り返し実行する処理が書けるようになります。 正規表現正規表現を覚えると

    Perl入門ゼミ
    pooh33
    pooh33 2015/08/11
  • Perl の文字列エンコーディングの話 | Hachioji.pm 日めくりテックトーク

    ハァイ,先日 Plack::Request::WithEncoding というモジュールをリリースしました,@moznion です.皆様いかがお過ごしでしょうか. さて,このモジュールを書いてて Perl の文字列エンコーディングに関する知識を幾ばくか深めましたので,共有したいと思います.まあ大体の皆さんは「そんなこと知ってるぜ!! 常識だろ!」という趣だと存じ上げますが…… ただまあ,「文字化けしてつらい!!」みたいなのは誰しも通る道だと思いますので記しておくこととします! TL;DR 入り口で decode して,内部ではすべて flagged utf8 で扱い,出口で encode する.これがすべてです!とにかくこの基方針をまもっていれば幸せになれます. from Perl で utf8 化けしたときにどうしたらいいか - blog.64p.org ぶっちゃけ,上記のエントリ良す

    pooh33
    pooh33 2015/04/17
  • [SQLインジェクション対策]Webアプリケーションとかの入門本みたいのを書く人への心からのお願い。 - *「ふっかつのじゅもんがちがいます。」withぬこ

    SQLインジェクションについて書くときに以下のメッセージを必ず含めて欲しいです。 単にプリペアドステートメントを使え 絶対に文字列結合でSQLを構築しようとしてはいけない IPAの「安全なSQLの呼び出し方」を読むこと なんでこんなことを書くかというと、同僚が献されてた「プロになるためのWeb技術入門」なるSQLインジェクションの項で、SQLインジェクションの対策として以下のように書いてあったからです*1。 a) 値をバリデーションする b) プリペアドステートメントを使う ダメです。間違っています。単に間違っているだけでなく救いがたく間違っています。正しいSQLインジェクション対策はこう書くべきです。 単にプリペアドステートメントを使え 文字列結合でSQLを構築するな イケてないを書く人はなんで値のバリデーションをプリペアドステートメントよりも先に書くんですか?値のバリデーション

    [SQLインジェクション対策]Webアプリケーションとかの入門本みたいのを書く人への心からのお願い。 - *「ふっかつのじゅもんがちがいます。」withぬこ
    pooh33
    pooh33 2015/01/13
    SQLインジェクション対策
  • 現代的なPerlの記述方法一覧 - Perl入門ゼミ

    Perl › here Perl5.8以降における標準的なPerlの書き方を解説します。 インターネットで検索するとPerl4のころの古い記述がたくさんあります。また書籍などの多くもPerl4の記法で書かれています。Perl4の記法は複雑になりやすく間違いを生みやすいのでこれからPerlを書く人はPerl5の現代的な記法で記述することを強くお勧めします。 strictプラグマとwarningsプラグマ (必須) strictプラグマとwarningsプラグマを有効にします。 use strict; use warnings; use strict;とuse warnings;の2行はスクリプトの最初に必ず記述してください。これらはPerlの文法チェックを厳しくするためのものです。面倒だという軽い気持ちでこれを記述しないと後々当に面倒なことになります。 use strict;とuse wa

    現代的なPerlの記述方法一覧 - Perl入門ゼミ
    pooh33
    pooh33 2014/10/24
    “レキシカル変数”
  • つれづれ日記 - perlでUnicodeかUTF-8文字列をCUI、テキストコンソールにprintf/sprintfのように等幅で出力するときはUnicode::GCStringを使って空白を埋める - つれづれ日記

    pooh33
    pooh33 2013/07/04
  • 1