また、Visual C++ 2005 最上位エディションの Team System では静的コード分析によってもセキュリティチェックを受けることが出来ます。 Design by Contract 的な事前検証・事後検証のチェックコードを記述できたりと、プログラミング言語の進化方向としてもなかなか興味深いです。 ちょうど今月号の C マガジン [cmagazine.jp]の『Windows API活用ガイド』で紹介されています。 (Express Edition では IDE サポートはありませんが、PREFast [microsoft.com]を単体で使えば下位エディションでも恩恵にあずかれたりするのかもしれません。未チェックです)
個人的感想 (スコア:3, 参考になる)
必須コンポーネントと統合開発環境(IDE)だけだと200MBぐらい。MSDN Express Edition (追加ドキュメント) を入れると1GB弱。Windows の API を使うには、Platform SDK のヘッダ/ライブラリがさらに必要です。私のところでは、VC++ 6.0 Pro, VC++ Toolkit 2003 と共存させて、SDK のヘッダ/ライブラリは VC++ 6.0 のものを参照するようにしてます。
VC++ 6.0 でコンパイルしていたものをインポートしてビルドしてみましたが、動作速度とかの比較はま
Re:個人的感想 (スコア:3, 参考になる)
ということで Visual C++ 2005 Express Edition を使いこなすには Platform SDK との併用は必須ですね(参考:Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う [microsoft.com])。後は 32-bit 版の MFC library を何とか入手する方法があれば更に無償度が上がるのですが、今の所見つかっていません。 今回の新機能の目玉の一つらしいですね(参考:Visual C++ 2005 C/C++ランタイム ライブラリ新機能概要 [microsoft.com])。引数の数すら合わないのに互換関数として紹介されても結構迷惑です。とはいえ pragma で抑制するのも気が引けるし困ったものです。
#現状、#ifdef で様子見かな。
Mc.N
Re:個人的感想 (スコア:5, 参考になる)
「MSDN Magazine」の『Safe! Repel Attacks on Your Code with the Visual Studio 2005 Safe C and C++ Libraries [microsoft.com]』を参照して、使うか使わないか決めるのも良いでしょう。
邦訳記事は、登録が必要ですが「MSDN マガジン オンライン」の『
Safe! Visual Studio 2005 Safe C および C++ ライブラリでコードへの攻撃を撃退する [microsoft.com]』でも読むことが出来ます。
記事中でも紹介されているISO 委員会 JTC1/SC22/WG14 [open-std.org]のページには
WDTR 24731 - draft for Safer more secure C functions [open-std.org]やTR 24731: Safer C library functions [open-std.org]などがあります。
また、Visual C++ 2005 最上位エディションの Team System では静的コード分析によってもセキュリティチェックを受けることが出来ます。
Design by Contract 的な事前検証・事後検証のチェックコードを記述できたりと、プログラミング言語の進化方向としてもなかなか興味深いです。
ちょうど今月号の C マガジン [cmagazine.jp]の『Windows API活用ガイド』で紹介されています。
(Express Edition では IDE サポートはありませんが、PREFast [microsoft.com]を単体で使えば下位エディションでも恩恵にあずかれたりするのかもしれません。未チェックです)
これに関連して、新しい Platform SDK は静的コード分析を行う上で重要な Header Annotations [microsoft.com] に対応しています。また Visual C++ 2005 の上位エディションに付属する MFC 8.0 と ATL 8.0 も Header Annotations を一部取り入れています。
以前「無料でダウンロードできる (Windows(R) Server 2003 SP1 Platform SDK Full Download) Platform SDK には MFC/ATL が含まれている」という話が紹介されて [srad.jp]いましたが、この MFC/ATL は Visual C++ 6.0 時代のものですのであまりおすすめできません。
確かに Express Edition に MFC/ATL が付属しないのは残念ではありますが、無料を強調するあまり、セキュリティ上好ましくないライブラリを薦めてしまわないよう気をつけるべきでしょう。
(それに相手がよく分かっている人ならまだしも、Express Edition の対象者を考えると、古い(既知のバグが修正されていない)ライブラリを薦めるのは色々まずいんじゃないかと)
Re:個人的感想 (スコア:3, 参考になる)
多分、セキュリティのことを考えるなら CLR(C++/CLI?) 上で動作するプログラムが望ましいんでしょうけど、それなら C# でいいやん、ってことに。
Mc.N