セキュアなプログラムを作ろう パート1
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/04/16(土) 12:29:59真っ先に考えなきゃいけない項目なのに後回しされる項目。
もっと考えろよ、お前ら
0002デフォルトの名無しさん
2005/04/16(土) 12:34:28決めた。
0003デフォルトの名無しさん
2005/04/16(土) 12:34:440004デフォルトの名無しさん
2005/04/16(土) 12:36:040005デフォルトの名無しさん
2005/04/16(土) 12:42:41文字数が制限できるlstrncpy、lstrncatを使う
全てにおいて余分なメモリを確保するようにする(昔は節約が重要だったが今はそうではない)
エラー処理、例外処理は手抜きしない
領域外の書き込みだけでなく領域外の読みにも気をつける
ウインドウメッセージを過信しすぎない
あえて挙げるならこれくらいか?
0006デフォルトの名無しさん
2005/04/16(土) 13:37:56ttp://www.hiemalis.org/~toshichan/hiki/hiki.cgi?%A5%BB%A5%AD%A5%E5%A5%A2%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%A5%EA%A5%F3%A5%AF%BD%B8
0007デフォルトの名無しさん
2005/04/20(水) 13:42:35理由を伴わずにそんなことを書いている段階でダメすぎ。
0008デフォルトの名無しさん
2005/04/20(水) 21:40:190009デフォルトの名無しさん
2005/04/24(日) 23:08:30system()はヤバイとか
printf(buf)じゃなくてprintf("%s",buf)にしろとか
みんな興味ないのかな
0010デフォルトの名無しさん
2005/04/25(月) 00:27:30GetWindowText(hwnd, buf, sizeof(buf)-1);
と
GetWindowText(hwnd, buf, sizeof(buf));
どっちが正しいのですか
0011デフォルトの名無しさん
2005/04/25(月) 00:44:10>nMaxCount
>バッファにコピーする文字の最大数を指定します。テキストのこのサイズを超える部分は、切り捨てられます。NULL 文字も数に含められます。
0012デフォルトの名無しさん
2005/04/25(月) 00:52:01assert使え
0013デフォルトの名無しさん
2005/04/25(月) 03:22:39で、どっちが正しいのですか
0014デフォルトの名無しさん
2005/04/25(月) 06:27:49ASCII文字列だと何文字分入れられるかわかってないだろ
0015デフォルトの名無しさん
2005/04/25(月) 22:13:07何がわからんのよ
0016デフォルトの名無しさん
2005/04/25(月) 22:16:45ITmediaの記事を読んでも良く分からんです
0017デフォルトの名無しさん
2005/04/25(月) 22:51:01日本語
0018デフォルトの名無しさん
2005/04/26(火) 23:34:22GetWindowText(hwnd, buf, sizeof(buf));
でいいよ
ASCII文字なら1023文字+\0まで取得可
0019デフォルトの名無しさん
2005/04/27(水) 20:02:26それならASCIIとは言えない。どっちにしてもA版APIではバイト数と読み替えればよい。
0020デフォルトの名無しさん
2005/09/28(水) 04:05:500021デフォルトの名無しさん
2005/12/03(土) 17:02:440022デフォルトの名無しさん
2005/12/03(土) 17:07:390023デフォルトの名無しさん
2005/12/03(土) 18:04:02作ろうというより、個人的には
誰かがオープンソースのプログラムをうp
↓
このスレでセキュリティに関する検討・ソース修正
みたいな流れが好きだ。
今の2chならどんな物も修正が出来るかも・・・
0024デフォルトの名無しさん
2005/12/03(土) 18:08:10ただ、あまりにもレベルの高い質問はするなよ。
よく分かんない時はスルーするから。
0025デフォルトの名無しさん
2005/12/03(土) 19:41:47char buf1[BUFFERSIZE] = "const 使えよっつー突っ込みはどうでもいい";
char *buf2 = (char *)malloc(BUFFERSIZE * sizeof(char));
sprintf(buf2, "abc %.*s def", BUFFERSIZE, buf1);
0026デフォルトの名無しさん
2005/12/03(土) 19:46:12なんだこの糞コードは
002724
2005/12/03(土) 20:58:29おまいらCでCGIでも書いてんの?
そうだとしたら尊敬するかも。
0028デフォルトの名無しさん
2005/12/03(土) 20:59:290029デフォルトの名無しさん
2005/12/03(土) 21:23:12ハゲシクワロタ
0030デフォルトの名無しさん
2005/12/04(日) 09:37:37sprintfは使えるんだけど、嫌い。
ファイルストラクタを使ってfprintfで出力させるのが手堅いが・・・
プロでもない漏れの技術じゃムリポ。
>>27
バッファオーバーフローが一番セキュリティの問題点として取り上げられるからじゃん?
0031デフォルトの名無しさん
2005/12/04(日) 11:28:33勘違いしてた
0032デフォルトの名無しさん
2005/12/04(日) 23:37:49を見ると、goto文もバッファオーバフローの原因になるって書いてるからな(笑)。
そりゃもうなんでもかんでもバッファオーバーフローってことで。
0033デフォルトの名無しさん
2005/12/04(日) 23:57:03char buf[80];
sprintf(buf, "%s", argv[1]);
printf(buf);
}
こういう感じのセキュアでないプログラムと
それを破るプログラムの簡単な実例集みたいなのって
どっかにないんすかね?
0034デフォルトの名無しさん
2005/12/05(月) 00:11:340035マイク ◆yrBrqfF1Ew
2005/12/05(月) 00:13:32>どっかにないんすかね?
IPAにあるだろ
http://www.ipa.go.jp/security/awareness/vendor/programming/b06.html
0036デフォルトの名無しさん
2005/12/05(月) 04:12:46だから、誰も目を向けないんだよ。
でも大事だから、お金はまわすべきだとおもうけどさ
0037デフォルトの名無しさん
2005/12/05(月) 08:21:220038デフォルトの名無しさん
2005/12/05(月) 14:45:27>>37
>>35のページに書いてあるけど、sprintfの代用関数として使用できるしオーバーフローはしないっぽい。
0039デフォルトの名無しさん
2005/12/05(月) 23:52:190040デフォルトの名無しさん
2005/12/06(火) 00:14:25普通に作れよ。 >M$
>>39
金取ってんだから当たり前だ。
自慢するほどのことじゃない。
0041デフォルトの名無しさん
2005/12/06(火) 00:35:200042デフォルトの名無しさん
2005/12/06(火) 13:15:46参考に出来るようなサイトはあるでしょうか。
ネットワーク板で聞いたらここで聞けと言われました。
0043デフォルトの名無しさん
2005/12/06(火) 13:27:34http://pc8.2ch.net/test/read.cgi/tech/1133087049/865-866
0044デフォルトの名無しさん
2005/12/07(水) 01:12:55> 重要なはずなのにあまり重要視されない項目。
> 真っ先に考えなきゃいけない項目なのに後回しされる項目。
> もっと考えろよ、お前ら
それは、あたかも武器がなくてもアメリカに
勝てると勘違いして旧日本陸軍に支配された大日本帝国だけ。
全てはCOBOLerやC++厨やM$が悪い
0045デフォルトの名無しさん
2005/12/07(水) 01:15:07そんなにセキュリティに拘りたければC++の使用を辞めて
率直にJavaを使えばいい
0046デフォルトの名無しさん
2005/12/07(水) 01:19:03コメントは
<!-- -->ではなく%-- --%>を使う。
当たり前
0047デフォルトの名無しさん
2005/12/07(水) 01:25:30ssh, scp, sftpを使う。
SSLを使ってhttp://ではなhttps://を使う。
セキュリティ上問題があるCGIを全面的に徹底的に排除する。
当たり前か
0048デフォルトの名無しさん
2005/12/07(水) 02:08:08●プリプロセッサを使用禁止しろ!
●定数は必ずconstで押さえろ!
●不変クラスにする必要があるものはできるかぎり不変クラスにしろ!
●実装メソッドがあるクラスの多重継承を禁止しろ!
●グローバル変数、グローバル関数を使用禁止にしろ!
●構造体、共用体の使用を禁止しろ!
●関数ポインタの使用を禁止しろ!
●演算子オーバーロードを使うな!
●typedef使用禁止!
●もしこれらの鉄則を遵守しなければC++厨もC言語厨も
このソフトウェア業界から出て行け!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
さもなければ、氏ねェェェェェェェェェェェェェェェェーーーーーーーーーーーーーーーーーーーーーーーーィ!!!!!
ブシュッ! グザァッ! グウォァ!(C言語厨、C++厨が切り刻まれる効果音)
「うぐぁぁぁぁ!だずげでぐれぇぇぇぇ!がぁぁぁ!…ぐぶっ………」(C言語厨、C++厨が死ぬ直前に発する最後の断末魔)
0049デフォルトの名無しさん
2005/12/07(水) 02:12:45#include禁止令キタコレ
0050デフォルトの名無しさん
2005/12/07(水) 02:18:10これもかよwwww
0051デフォルトの名無しさん
2005/12/07(水) 07:58:100052デフォルトの名無しさん
2005/12/07(水) 12:12:370053デフォルトの名無しさん
2005/12/08(木) 00:37:350054デフォルトの名無しさん
2005/12/08(木) 01:20:160055デフォルトの名無しさん
2005/12/08(木) 19:08:43C/C++でさえも扱えないJava厨乙。
> ●不変クラスにする必要があるものはできるかぎり不変クラスにしろ!
日本語がおかしいだろ。
Javaのやり過ぎでとうとう日本語も使えなくなってきましたか。( ´,_ゝ`)プッ
>>54
場合によっちゃ必要らしい。
漏れはOOPの経験が浅いからよく分からないが、OOPの経験が深い先輩が、「C++でもJavaでも多重継承が必要だ。」みたいな事を言ってた。
0056デフォルトの名無しさん
2005/12/08(木) 19:51:520057マイク ◆yrBrqfF1Ew
2005/12/08(木) 23:51:13http://www-06.ibm.com/jp/developerworks/linux/040423/j_l-sp3.html
http://www-06.ibm.com/jp/developerworks/linux/040521/j_l-sp4.html
http://www-06.ibm.com/jp/developerworks/linux/040326/j_l-sp2.html
0058デフォルトの名無しさん
2005/12/09(金) 01:28:32sizeofを使わないで安全にサイズを指定するってのはどうやるんでしょうか?
本当はそのスレでカキコした人に聞くのが良いのでしょうがスレ違いらしかったので。
0059デフォルトの名無しさん
2005/12/09(金) 01:49:46一律にダメってわけじゃない。自分が担当してる関数内のローカル変数
に使うのに躊躇する理由はない。
配列でもポインタでも動くことが期待されるマクロに使うのが超危険と
いう話だった。
0060デフォルトの名無しさん
2005/12/09(金) 07:16:25#includeだけは例外。
っていうか禁止したいのは#ifdefとかの煩わしいものだろ。
そういうスパゲティコード馬鹿生成器なる無駄なものはいらない。
0061デフォルトの名無しさん
2005/12/09(金) 07:17:25クラス定義できればtypedefなんていらんだろ。
C++をまともにつかいこなしたければ
typedefなど無駄な機能は徹底的に排除すべきだ。
0062デフォルトの名無しさん
2005/12/09(金) 07:18:43無駄なプリプロセッサやゴミみたいな余計な機能を
高機能だとはさすがに言うわけにはいかないな。
0063デフォルトの名無しさん
2005/12/09(金) 07:19:57そんな言い方をしていると
C/C++の、(まるでそろばんのように)無駄な機能を
使いこなせただけで偉くなった、凄いスキルを持っている能力があると
勘違いして自惚れているC言語厨乙って言われるぞw
0064デフォルトの名無しさん
2005/12/09(金) 07:27:00> >>48
> C/C++でさえも扱えないJava厨乙。
> > ●不変クラスにする必要があるものはできるかぎり不変クラスにしろ!
> 日本語がおかしいだろ。
> Javaのやり過ぎでとうとう日本語も使えなくなってきましたか。( ´,_ゝ`)プッ
不変クラスはC++でも作ることができることを知らないのか。( ´,_ゝ`)プッ
オブジェクト指向を知らないで聞いたことがない用語を聞くと
すぐ「日本語がおかしい」と言い切るのはまだまだC++を扱えないC言語厨乙だぞ( ´,_ゝ`)プッ
( ´,_ゝ`)プッ ←馬鹿っぽいAAだけど使ってみたぞ( ´,_ゝ`)プッ
> >>54
> 場合によっちゃ必要らしい。
おいおい、C++を扱えるんだったら「C/C++でさえも扱えないJava厨乙。 」
と言い切る奴がそんな「場合によっちゃ必要らしい。 」なんて言うのは恥ずかしいぞ( ´,_ゝ`)プッ
> 漏れはOOPの経験が浅いからよく分からないが、OOPの経験が深い先輩が、「C++でもJavaでも多重継承が必要だ。」みたいな事を言ってた。
Javaで多重継承ができると思ってるのかC言語厨( ´,_ゝ`)プッ
実装多重継承とインターフェース継承との違いくらい区別つけろよ( ´,_ゝ`)プッ
C/C++/Javaでさえも扱えないC++厨の皮を被ったただのC言語厨乙。 ( ´,_ゝ`)プッ
( ´,_ゝ`)プッ
( ´,_ゝ`)プッ
( ´,_ゝ`)プッ
0065デフォルトの名無しさん
2005/12/09(金) 08:00:120066デフォルトの名無しさん
2005/12/09(金) 17:05:55テンプレートをごちゃごちゃ使うときにはないと不便だよ。
勿論テンプレート使っている時点でまともじゃないとか言うなよ。
0067デフォルトの名無しさん
2005/12/10(土) 06:55:040068デフォルトの名無しさん
2005/12/10(土) 23:38:12typedef int int32;
#else
typedef long int32;
#endif
これがダメとかぬかされると、笑うしかねえな
0069デフォルトの名無しさん
2005/12/10(土) 23:39:48下線が2つ並んだ部分が含まれる識別子は予約されている。
ただしC++の場合。Cなら別にいいけどさ。
0070デフォルトの名無しさん
2005/12/10(土) 23:58:26コンパイラがはじめっから定義してるマクロ
という意味合いで書いたんだがな
あと、C++ならlimitsとテンプレートでできるな
typedefはするだろうが
0071デフォルトの名無しさん
2005/12/14(水) 07:01:520072デフォルトの名無しさん
2005/12/15(木) 22:33:04■ このスレッドは過去ログ倉庫に格納されています