スキップしてメイン コンテンツに移動

投稿

2012の投稿を表示しています

エスケープしろよ

頭きた。 いい加減、 何をどうしなけりゃいけないか覚えろ。 基本はこれ。 ■HTMLの一部として出力するとき htmlspecialchars()、htmlentities()のどちらかを通す。 ■MySQL用のSQL文を生成するとき mysql_real_escape_string()を通す。 ■PostgreSQL用のSQL文を生成するとき PHP 5.4.4より前のバージョン:pg_escape_string() PHP 5.4.4以上のバージョン:pg_escape_literal() あと、 過去資産は全て使えないから。

jQueryで連番のid属性を持つ要素に対してまとめて処理する

例えば、何かのマスタデータを一覧形式で修正できるようなインターフェイスがあったとしよう。 <input id="mstcd001" name="mstcode[]" type="text" value="mstcd001" /> <input id="mstcd002" name="mstcode[]" type="text" value="mstcd002" /> <input id="mstcd003" name="mstcode[]" type="text" value="mstcd003" /> <input id="mstcd201" name="mstcode[]" type="text" value="mstcd201" /> <input id="mstcd351" name="mstcode[]" type="text" value="mstcd351" /> クリックしたときやフォーカス取得時に、テキスト全選択したいときは、こんな感じで設定するといい。 <script> <!-- $(document).ready(function() { $('input').filter(function(){ return this.id.match(/^mstcode([0-9])+$/i); }) .focus(function(){ $(this).select(); }) .mouseup(function(e){ e.preventDefault(); }); }); //--> </sc...

CentOS 6.3 最小構成からのスタート
(6)MySQLの起動

インストール直後は、自動起動しない。 # chkconfig auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off # なので、自動起動するようにする。 ...

CentOS 6.3 最小構成からのスタート
(5)apacheの起動

インストール直後は、自動起動しない。 # chkconfig auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off # なので、自動起動するようにする。 ...

CentOS 6.3 最小構成からのスタート
(4)LAMPインストール

# yum install httpd php php-mbstring php-mysql mysql-server Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.nara.wide.ad.jp * extras: ftp.nara.wide.ad.jp * updates: ftp.nara.wide.ad.jp Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package httpd.x86_64 0:2.2.15-15.el6.centos.1 will be installed --> Processing Dependency: httpd-tools = 2.2.15-15.el6.centos.1 for package: httpd-2.2.15-15.el6.centos.1.x86_64 --> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-15.el6.centos.1.x86_64 --> Processing Dependency: /etc/mime.types for package: httpd-2.2.15-15.el6.centos.1.x86_64 --> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.2.15-15.el6.centos.1.x86_64 --> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.2.15-15.el6.centos.1.x86_64 ---> Package mysql-server.x86_64 0:5.1.66-1.el6_3 will be installed --> Processing Dependency: mysql =...

htmlspecialchars()とhtmlentities()の第4引数はfalseで

文字エンコーディングに UTF-8 を使っているときは気にしなかったが、 EUC-JP や Shift_JIS を使わなければならなかったとき、ハマッた。 EUC-JP や Shift_JIS (両方とも、Windows標準キャラクタセットが扱える CP51932、SJIS-win を含む)の場合、これらの文字セットに存在しない ⓒ などをPOSTすると、数値文字参照形式でPOSTされる。 なので、POSTされた値を htmlspecialchars() や htmlentities() を通して echo htmlspecialchars(POST値, ENT_QUOTES, 文字エンコーディング); echo htmlentities(POST値, ENT_QUOTES, 文字エンコーディング); とすると、数値文字参照の「&」が「&amp;」に変換され、数値文字参照の値がそのまま表示される。 これは、両関数の第4引数「double_encode」のデフォルトが「true」のため。 ■PHPマニュアル htmlspecialchars() http://www.php.net/manual/ja/function.htmlspecialchars.php ■PHPマニュアル htmlentities() http://www.php.net/manual/ja/function.htmlentities.php 回避策は、この第4引数「double_encode」を「false」にしてやればいい。 こんな感じ。 echo htmlspecialchars(POST値, ENT_QUOTES, 文字エンコーディング, false); echo htmlentities(POST値, ENT_QUOTES, 文字エンコーディング, false);

ただのメモ兼ブックマーク

PHP型の比較表 http://www.php.net/manual/ja/types.comparisons.php MySQLのNULLは、 ・is_null() で true。 ・ == '' で true。 phpMyAdminでtext型フィールドの値を表示する http://www.zelazny.mydns.jp/archives/002723.php InsertしたレコードのAUTO_INCREMENT値を取得する http://blog.tofu-kun.org/071206185929.php CentOS6.2 へ OpenVZ を入れる http://www.mogumagu.com/wp/wordpress/?p=729 iPhone4 のデフォルト文字数など 横幅:ひらがな19文字 縦幅:14行 htmlspecialchars(),htmlentities()の第3引数は、IANAに登録されているMIME名を使う UTF-8 Shift_JIS EUC-JP PHPでシングルトン http://d.hatena.ne.jp/Yudoufu/20090811/1250021010 topコマンドで表示される値の意味 http://www.uetyi.mydns.jp/wordpress/command/entry-124.html topコマンドで表示されるVIRTの意味 http://okwave.jp/qa/q5812588.html findで検索していろいろ http://uguisu.skr.jp/Windows/find_xargs.html OpenSSLの脆弱性 ・libcrypto ・libssl 2014/4と2014/6の脆弱性はこっちのライブラリ

CentOS 6.3 最小構成からのスタート
(3)インストール済みパッケージ

2012/10/30 1:45 JST 現在 # yum -y update ... # rpm -qa | sort MAKEDEV-3.24-6.el6.x86_64 acl-2.2.49-6.el6.x86_64 aic94xx-firmware-30-2.el6.noarch atmel-firmware-1.3-7.el6.noarch attr-2.4.44-7.el6.x86_64 audit-2.2-2.el6.x86_64 audit-libs-2.2-2.el6.x86_64 authconfig-6.1.12-10.el6.x86_64 b43-openfwwf-5.2-4.el6.noarch basesystem-10.0-4.el6.noarch bash-4.1.2-9.el6_2.x86_64 bfa-firmware-3.0.0.0-1.el6.noarch binutils-2.20.51.0.2-5.34.el6.x86_64 bzip2-1.0.5-7.el6_0.x86_64 bzip2-libs-1.0.5-7.el6_0.x86_64 ca-certificates-2010.63-3.el6_1.5.noarch centos-release-6-3.el6.centos.9.x86_64 checkpolicy-2.0.22-1.el6.x86_64 chkconfig-1.3.49.3-2.el6.x86_64 coreutils-8.4-19.el6.x86_64 coreutils-libs-8.4-19.el6.x86_64 cpio-2.10-10.el6.x86_64 cracklib-2.8.16-4.el6.x86_64 cracklib-dicts-2.8.16-4.el6.x86_64 cronie-1.4.4-7.el6.x86_64 cronie-anacron-1.4.4-7.el6.x86_64 crontabs-1.10-33.el6.noarch curl-7.19.7-26.el6_2.4.x86_64 cyrus-sasl-2.1.23-13.el6.x86_64 cyrus-sasl-lib-2.1.23-13.el6.x86_64 dash-0.5.5.1-3.1.el6.x...

Windows 2003 R2 で MicrosoftUpdate がループする

当方、元々はWindowsサーバー管理者でした。 1000人規模のAD構築して、グループポリシーでガチガチに環境固めて運用してたときが、サーバー管理者って感じだったなぁ... スクリプト組んで、いろいろ自動化したりもしたし... あー懐かし。 でね、久しぶりにWindows OS インストールして使うことになった。 2003 R2。今更か! まぁいい。 で、OS入れてMicrosoft Update したら... http://update.microsoft.com/windowsupdate/v6/default.aspx?ln=ja ↓ http://www.update.microsoft.com/windowsupdate/v6/default.aspx?ln=ja ↓ http://update.microsoft.com/windowsupdate/v6/default.aspx?ln=ja ↓ ... と、無限ループし出した。 最初は、IE6だからか?と思ってIE8ダウンロード & インストールして、さてもう一回... http://update.microsoft.com/windowsupdate/v6/default.aspx?ln=ja ↓ http://www.update.microsoft.com/windowsupdate/v6/default.aspx?ln=ja ↓ http://update.microsoft.com/windowsupdate/v6/default.aspx?ln=ja ↓ ... 状況変わらず。 で、検索したらこれを見つけた。 ■Windows Uptdate のコンポーネントをリセットする方法 http://support.microsoft.com/kb/971058/ja ここの手順3.までやって、もう一回Microsoft Updateしたら、今度は正常に動作した。 今から、121個の重要な更新をインストールしなければ... しゃーない。朝まで放置。

CentOS 5.8 に OpenSSH 5.8p2 を入れる

大変お世話になりました。 ■CentOS5.5にOpenSSH5.8p2を入れる http://d.hatena.ne.jp/erio_nk/20121005/1349437604 ちなみに、CentOS6.3を最小構成でインストールすると、OpenSSHは5.3p1がインストールされる。 このバージョンでも、chrootできるからいいっちゃいいんだが...

CentOS 5.8 を ゼロから LAMP サーバーにする(8)サービスを起動する

インストール直後はサービスが起動していない。 # chkconfig --list ... httpd           0:off 1:off 2:off 3:off 4:off 5:off 6:off ... mysqld         0:off 1:off 2:off 3:off 4:off 5:off 6:off ... # service httpd status httpd は停止しています # service mysqld status mysqld は停止しています # なので起動する。 # service httpd start httpd を起動中:               [  OK  ] # service mysqld start MySQL を起動中:               [  OK  ] # ついでに自動起動設定もする。 # chkconfig httpd on # chkconfig mysqld on # chkconfig --list ... httpd           0:off 1:off 2:on  3:on  4:on 5:on 6:off ... mysqld          0:off 1:off 2:on 3:on 4:on 5:on 6:off ... これでとりあえずLAMPサーバーとして動く。

公開鍵認証とSFTP

お客さんから指摘された内容があまりにもあまりにもだったので、愚痴ってみる。 『公開鍵認証用の公開鍵を勝手に追加できてしまうということは、SFTPにしている意味がない。』 ?がいくつ欲しい? まず、公開鍵認証について。 公開鍵認証は、単なる「認証方式」の一つ。 クライアントでキーペアを生成し、公開鍵をログイン先サーバーへ適切な方法で設定しておくことで、その秘密鍵を持っているクライアントからログインできるというもの。 そう。ログイン時に使用する認証方式。 SFTP は、SSHの上で動くFTP(に似たプロトコル)。「ファイル転送方式」の一つ。 SFTP自体は、ファイル転送をSSH上で暗号化して行うことを目的にしているので、ログイン認証方式は、ぶっちゃけ何でもいい。だから、別にアイパス使ってログインしてもいい。SSHですらアイパスでログインできてしまう(設定次第だが...) なので、公開鍵認証とSFTPはセットみたいな言われ方をされてカチンときたが、お客さんと喧嘩してもいいことないので、ここで愚痴ってみた。 所詮、客先のIT担当なんて、いつも偉そうな口叩きやがるくせして、こんなもんかと。

cron で実行されたコマンドから出力されたメッセージをメールで送信する方法

本題に入る前に、まずは、sh/bash系のシェルで標準出力と標準エラー出力をリダイレクトする方法から。 現在使用中のシェルを確認するには、 # echo $SHELL とすれば確認できる。 その他、利用できるシェルを確認するには # cat /etc/shells とする。 ■リダイレクトについて commandコマンドが出力を伴うコマンドの場合、commandコマンドの出力をresult.txtへ出力するには # command > result.txt コマンドの実効結果を別のコマンドの入力値とする場合は、|(パイプ)でつなげる。 # command1 | command2 ■標準出力と標準エラー出力について ・標準出力 正常結果やコマンド実行途中に出力されるメッセージの出力先。 ・標準エラー出力 異常終了時のメッセージやエラーメッセージなど、ユーザーに気づいてほしいメッセージの出力先。 ■標準出力と標準エラー出力の両方をリダイレクトする 先のcommandコマンドのリダイレクト例のうち、result.txtへのリダイレクトは、標準出力をリダイレクトしている。そのため、標準エラー出力はリダイレクトされず、仮にcommandコマンドが標準エラー出力へメッセージを出力した場合は、result.txtではなくコンソールへ出力(表示)される。 標準出力と標準エラー出力の両方をリダイレクトして、result.txtへ出力するには、 # command > result.txt 2>&1 とする。 なお、上の例を省略なしで記述すると # command 1> result.txt 2>&1 となる。 この「1」「2」の番号について。 ・1:標準出力。通常はコンソール画面。 ・2:標準エラー出力。通常はコンソール画面。 となっている。 ちなみに、「0」は「標準入力」。通常はキーボードからの入力。 例:標準エラー出力を error.log へ出力する。標準出力はコンソールへ表示する。 # command 2> error.log 例:標準出力は result.log 、標準エラー出力は error.log へ...

CentOS 5.8 を ゼロから LAMP サーバーにする(5)my.cnf

例によって、CentOS 5.8へMySQLインストール直後の /etc/my.cnf。 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 # Disabling symbolic-links is recommended to prevent assorted security risks; # to do so, uncomment this line: # symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

CentOS 5.8 を ゼロから LAMP サーバーにする(4)php.ini

インストール直後の /etc/php.ini 。64bit環境。 [PHP] ;;;;;;;;;;;;;;;;;;; ; About php.ini ; ;;;;;;;;;;;;;;;;;;; ; PHP's initialization file, generally called php.ini, is responsible for ; configuring many of the aspects of PHP's behavior. ; PHP attempts to find and load this configuration from a number of locations. ; The following is a summary of its search order: ; 1. SAPI module specific location. ; 2. The PHPRC environment variable. (As of PHP 5.2.0) ; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0) ; 4. Current working directory (except CLI) ; 5. The web server's directory (for SAPI modules), or directory of PHP ; (otherwise in Windows) ; 6. The directory from the --with-config-file-path compile time option, or the ; Windows directory (C:\windows or C:\winnt) ; See the PHP docs for more specific information. ; http://www.php.net/manual/en/configuration.file.php ; The syntax of the file is extremely simple. Whitespace and Lines ; beginning with a semicolon...