カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

bashの脆弱性“Shell Shock”(CVE-2014-6271)

2014年9月24日にBashの脆弱性が公表されました。
これはかなり危険度の高い脆弱性ですので、対処していない場合は早急に対処する必要があります。

原因は環境変数に関数が定義されてしまい、シェルを起動するだけで有効になってしまうことです。

脆弱性があるかどうかチェックするには以下のコマンドを実行してみてください。

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

以下のように出力されたらアウトです。

vulnerable
this is a test

echo vulnerable」の部分に任意のコマンドを入れることができます。

早急にbashをアップデートすることをお勧めします。
bashのバージョンを確認するには

rpm -qa | grep bash

続きを読む…»

2,064 views

qmHandle

qmailを運用していく上で非常に便利なツール「qmHandle」についてご紹介します。
スパムの被害に遭ったり、メールキューが溜まりすぎてサーバーで処理してしまいたい時などに重宝します。

初めは「queue-fast.pl」というツールを使っていました。
ただ、このツールには指定したアドレス宛のメールキューを削除という機能はあるのですが、
送信元のアドレスを指定して削除することはできません。

そのため、このツールでキューの一覧を出力しテキストファイルに保存し、その中から不要なキューのメール番号リストを作成。
リストを利用し、qmHandleで削除していくシェルスクリプトを作成し削除する、という方法をとっていました。

ですが、この方法だと少々時間がかかり、キューの数が多いとかなりかかります。
なんとかできないかとqmHandleのヘルプを見ると、送信元アドレスを指定して削除するオプションがありました!
前述のような面倒なことをしなくてもqmHandle一つで出来たとは…。
ちなみにそれが出来るようになったのはバージョン1.3.0からのようです。

qmHandleのオプションについて全てを紹介しているサイトは少なかったので、ここで紹介させていただきたいと思います。
qmHandleのダウンロードは以下のURLから。
https://sourceforge.net/projects/qmhandle/
続きを読む…»

3,612 views

Listのコピー

List<string> list1 = new List<string> (){"test"};

参照渡し
list1の内容が変わるとlist2の内容も変わる

List<string> list2 = list1;

値渡し
list1の内容が変わってもlist3の内容は変わらない

List<string> list3 = new List<string>(list1);
1,924 views

Dictionaryクラス VBA

Dictionaryクラスはハッシュテーブルのように使えるクラスです。
Collectionクラスも同じように使えるのですが、Dictionaryクラスはキーが存在するかどうかをチェックするメソッドがあることがポイントです。

Dim dict As Object

Set dict = CreateObject("Scripting.Dictionary")

キーが存在しないことを確かめてからデータを追加します。

If dict.Exists("いちご") <> True Then
    dict.Add "いちご", "いちご"
End If

ループして全ての値を取り出します。

For Each vntItem In dict.Items
    MsgBox vntItem
Next vntItem

続きを読む…»

3,591 views

複数の条件分岐 Select Case

複数の条件で処理を分岐させたい場合、Select Caseステートメントを使用します。
他の言語でのswitch文と似ていますので、そちらをご存じの方には親しみやすいと思います。

文法

Select Case 変数
    Case 値1
        変数が値1だった場合の処理
    Case 値2
        変数が値2だった場合の処理
    Case Else
        それ以外の場合の処理
End Select

「Case Else」がswitch文での「default」に当たります。
VisualBasicではbreakは不要です。

値の判定には数値はもちろん、文字列も使用可能です。
また比較条件を指定することもできます。

Select Case 変数
    Case Is 比較条件1
        変数が比較条件1を満たした場合の処理
    Case Is 比較条件2
        変数が比較条件2を満たした場合の処理
    Case Else
        変数がどの条件も満たさなかった場合の処理
End Select

続きを読む…»

3,820 views