下記サイト記事の一つ目の例についてです。
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ランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
エクセルで文字列の最大値を抽...
-
ORCLEでの小数の表示方法の変更...
-
VBAでの Replace関数で、ワイル...
-
VBA2005 16進を2桁で表示したい。
-
【Excel VBA】複数ある特定の文...
-
アクセスで特定の数字以外(複...
-
エクセルで文字列をtxtファイル...
-
【Teratermマクロ】文字列の分...
-
OnTime 使用時のプロシージャへ...
-
エクセル 数値データを桁をそ...
-
aaa.bbb.ccc という、「ドット...
-
MS SQLServer のSQLで文字列の...
-
textboxユーザーコントロールの...
-
C#で年月を比較する
-
VBscriptで文字サイズを指定で...
-
A B C D E の五文字のすべてを...
-
Left関数とRight関数を合わせた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
エクセルで文字列をtxtファイル...
-
【Excel VBA】複数ある特定の文...
-
エクセル 数値データを桁をそ...
-
Excelで3E8を3.00E+8にしない方...
-
VBA2005 16進を2桁で表示したい。
-
エクセルで文字列の最大値を抽...
-
同一セル内に関数と文字列を同...
-
Left関数とRight関数を合わせた...
-
Excelで指数表現しないようにす...
-
MS SQLServer のSQLで文字列の...
-
VBの「As String * 128」とは?
-
エクセルでセル内の文字列の最...
-
ORCLEでの小数の表示方法の変更...
-
bashスクリプトでの文字列から...
-
LEFT関数で文字数を指定しない...
-
アクセスで特定の数字以外(複...
おすすめ情報

