下記サイト記事の一つ目の例についてです。
https://www.jpcert.or.jp/sc-rules/c-fio30-c.html
違反コードでは、fprintf関数を使用しており危険、適合コードはfputs関数で回避とありますが、ユーザーからの入力を元にした文字列msgをsnprintfで構築しているのは両方とも変わりませんが、それを書式文字列として扱うかどうかによって件名の関数の危険有無が変わるというのがいまいち分かりません。
ユーザーの危険な入力を何か一例として、解説をお願い出来ないでしょうか?
No.3ベストアンサー
- 回答日時:
例えば、ユーザー入力(mgs)が "%s%s"
で
fprintf(stderr, msg);
なんて実行したらたいてい落ちます。
%sに対応するパラメー夕(文字列のポイン夕)をパラメー夕スタックから読みますが、与えていないので不正値を読み、それを使って文字列を読み取ろうとして、たいていは不正メモリアクセスになります。
No.2
- 回答日時:
>それを書式文字列として扱うかどうかによって件名の関数の危険有無が変わるというのがいまいち分かりません。
危険性についてはNo1さんの回答に1票。
個人的には、fputs関数で回避するのではなく、
fprintf(stderr, msg);
を、書式文字列 と 出力文字列をちゃんと分離して
fprintf(stderr, "%s", msg);
とすればよいだけのことと思います。
No.1
- 回答日時:
ユーザーが入力したパスワードに、%sや%fが含まれていると、msgバッファーに、%sや、%fが含まれてしまうので、
fprintf(stderr, msg);
で、おかしな動作をしてしまいます。なので、fputs()で、ただの文字列として出力してくださいということだと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の関数と配列に関する質問 8 2024/02/27 15:45
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- 日本語 算用数字と漢数字の使い分け 5 2023/10/16 08:50
- Excel(エクセル) 式の解読のお願いm(_._)m 4 2024/02/22 19:16
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- その他(プログラミング・Web制作) 文字コード及びフォントに関する次の記述を読み,適切なものをすべて選べ。 ASCIIとは,英数字だけを 4 2023/01/11 19:10
- Gmail マイクロソフトアカウントチームから「あなたの一時使用コード」メールが来る 1 2024/02/01 14:48
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- JavaScript JavascriptでDom XSSの脆弱性対策を行いたい 2 2023/09/24 21:20
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
C言語の関数と配列に関する質問
C言語・C++・C#
-
double型が正常に認識されていない恐れ
C言語・C++・C#
-
WindowsのCapsLock(キャップスロック)って、何の意味があるんですか?
C言語・C++・C#
-
-
4
gccを行ってもexeファイルが生成されない
C言語・C++・C#
-
5
これなにがちがうんですか??
C言語・C++・C#
-
6
こんなことてしますか??
C言語・C++・C#
-
7
なんかC言語でプログラム書いてると脳汁というかエクスタシーというかなんかすげえ気持ちいいんですけどな
C言語・C++・C#
-
8
C言語 配列と関数の練習問題
C言語・C++・C#
-
9
C言語について。
C言語・C++・C#
-
10
mallocについて
C言語・C++・C#
-
11
C言語をコンパイルするとコンピュータ上でどう動くかというコードになるみたいな説明をよく聞くのですがこ
C言語・C++・C#
-
12
C言語 バッファについて。
C言語・C++・C#
-
13
C言語について
C言語・C++・C#
-
14
C言語って古いですか?
C言語・C++・C#
-
15
ストリーム 意味について。
C言語・C++・C#
-
16
C言語関数違いについて。
C言語・C++・C#
-
17
C言語 解答について。
C言語・C++・C#
-
18
gcc13.2のバグ?
C言語・C++・C#
-
19
パイソン。If elseの挙動について教えてください。パソコンは、if else で、まずifに当て
C言語・C++・C#
-
20
c言語
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelはなんで先頭の0を消すん...
-
VBAでの Replace関数で、ワイル...
-
EXCELで=より左の文字を一括で...
-
エクセルで文字列をtxtファイル...
-
マクロ処理でのループの記述に...
-
VBscriptからバッチに変数を渡...
-
エクセルで文字列の最大値を抽...
-
“丸(〇/○/◯)”に似た文字…
-
同一セル内に関数と文字列を同...
-
sedなどで、特定の文字列の後の...
-
A B C D E の五文字のすべてを...
-
エクセルでアルファベットか数...
-
MS Wordのテキスト ボックス フ...
-
StringGridで選択した箇所の文...
-
bashスクリプトでの文字列から...
-
Msgboxの×が押されたとき
-
VBscriptで、Excelのセルに文字...
-
Left関数とRight関数を合わせた...
-
delphiにて 文字列の最後の改...
-
[大学数学 形式言語]回文を受理...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
Excelで指数表現しないようにす...
-
エクセルで文字列の最大値を抽...
-
エクセル 数値データを桁をそ...
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
sedなどで、特定の文字列の後の...
-
MS SQLServer のSQLで文字列の...
-
Left関数とRight関数を合わせた...
-
Msgboxの×が押されたとき
-
アクセスで特定の数字以外(複...
-
【Excel VBA】複数ある特定の文...
-
エクセルでセル内の文字列の最...
-
C#で年月を比較する
おすすめ情報