下記サイト記事の一つ目の例についてです。
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も見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
mallocについて
C言語・C++・C#
-
C言語をコンパイルするとコンピュータ上でどう動くかというコードになるみたいな説明をよく聞くのですがこ
C言語・C++・C#
-
なんかC言語でプログラム書いてると脳汁というかエクスタシーというかなんかすげえ気持ちいいんですけどな
C言語・C++・C#
-
-
4
C言語 配列と関数の練習問題
C言語・C++・C#
-
5
こんなことてしますか??
C言語・C++・C#
-
6
プログラミングの課題がわからないので教えていただきたいです。特にサークル関数を定義した後に呼び出す方
C言語・C++・C#
-
7
プログラム言語について c言語もコードによって機械語に通訳されると知りました。直接機械が通訳しなくて
C言語・C++・C#
-
8
逆コンパイルと逆アセンブルの違いはなんですか
C言語・C++・C#
-
9
どちのほうがすきですか?
C言語・C++・C#
-
10
0 == False はいいけど
C言語・C++・C#
-
11
c言語
C言語・C++・C#
-
12
プログラミング言語についてc++に空白あると同じ文字を再度繰り返して処理しないといけないので2倍動作
C言語・C++・C#
-
13
プログラミングについて。 1つのループで Aという計算と Bという計算をするのと これらを分けて2つ
C言語・C++・C#
-
14
だれがとけるの?
C言語・C++・C#
-
15
c言語のリダイレクトによる円の描画について
C言語・C++・C#
-
16
10進数からN進数に変換するプログラミング(C言語)
C言語・C++・C#
-
17
応用情報技術者試験の令和元年秋、午後のプログラムの問題がわからないです。
C言語・C++・C#
-
18
Python、プログラミングについて質問です
C言語・C++・C#
-
19
CPUが16bitでも32bitOSでコンパイルしたコード(例えばintが4バイトと定義されている)
C言語・C++・C#
-
20
インクリメント演算子のみを用いて、下に表示されるようにプログラムします 99 100 102 103
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
文字列からタブコードを取り除...
-
EXCELで=より左の文字を一括で...
-
Left関数とRight関数を合わせた...
-
【Excel VBA】複数ある特定の文...
-
VBAでの Replace関数で、ワイル...
-
vbsからバッチファイル実行時の...
-
Excelで指数表現しないようにす...
-
エクセルで文字列の最大値を抽...
-
C#で年月を比較する
-
Excelで3E8を3.00E+8にしない方...
-
エクセルで文字列をtxtファイル...
-
アクセスで特定の数字以外(複...
-
16進数を10進数に簡単に変換す...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
CStringの文字列検索&抜き出し...
-
VBの「As String * 128」とは?
-
C# 巨大な文字列の計算をさせたい
-
MS SQLServer のSQLで文字列の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
Excelで3E8を3.00E+8にしない方...
-
エクセルで文字列をtxtファイル...
-
Excelで指数表現しないようにす...
-
【Excel VBA】複数ある特定の文...
-
Left関数とRight関数を合わせた...
-
エクセルで文字列の最大値を抽...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
MS SQLServer のSQLで文字列の...
-
エクセル 数値データを桁をそ...
-
C#で年月を比較する
-
16進数を10進数に簡単に変換す...
-
“丸(〇/○/◯)”に似た文字…
-
アクセスで特定の数字以外(複...
-
Msgboxの×が押されたとき
おすすめ情報