文字コード総合スレ part15 (347レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
177
(5): デフォルトの名無しさん [sage] 2025/01/18(土) 03:52:04.02 ID:CaguG0TX(1/7) AAS
RustがWindowsでファイル名を扱う時のWTF-8、あれ脆弱性の元な気がするんだよな…
WTF-8状態でサロゲートペアの前後を結合してしまうとUTF-8のとはまた別の冗長表現が導入されてしまう
179
(1): デフォルトの名無しさん [sage] 2025/01/18(土) 10:15:43.69 ID:CaguG0TX(2/7) AAS
>>178
178(1): デフォルトの名無しさん [sage] 2025/01/18(土) 09:40:44.96 ID:ryxfYm1H(1/5) AAS
>>177
気のせいじゃない?
規格どおり実装されてればUTF-8にサロゲートなんて概念は存在しない
最短表記のみが正式なので冗長性はないよ
UTF-8では違反なサロゲートの片方だけを許すのがWTF-8なので
正常なサロゲートペアをUTF-8に変換したときの4〜6バイト表現に対して
WTF-8ではペアの片割れを別々に変換して結合した3バイトのサロゲート片☓2な別表現が存在できてしまうでしょ
これらはUTF-16に戻したら同じ文字列になってしまうので
WTF-8で比較等の処理をしてUTF-16に戻すと脆弱性になっちゃう
181: デフォルトの名無しさん [sage] 2025/01/18(土) 10:44:27.05 ID:CaguG0TX(3/7) AAS
>>180
180(1): デフォルトの名無しさん [sage] 2025/01/18(土) 10:40:31.12 ID:ryxfYm1H(2/5) AAS
>>179
色々間違えてる
UTF-8では片側だろうと両方だろうとサロゲート領域のコードは許されてない。あったらUTF-8じゃない
サロゲート導入前の古いUTF-8規格を参照してるアホがいるだけ
UTF-8は最大長で1文字4バイト、それ以上長いのは今のUTF-8では許されない
ましてWTF-8とか名前変えてもユニコード規格の対象外、UTF-8ではない
最初っからWTF-8って言ってるじゃん
182: デフォルトの名無しさん [sage] 2025/01/18(土) 10:49:44.07 ID:CaguG0TX(4/7) AAS
Windowsのファイルシステムでは文字コードとしては不正なバイト列がファイル名として存在できる
それを8バイト文字列で無理やり扱うためRustではWTF-8という本来エラーになる表現も許容した規格違反UTF-8を使っている
OK?
184: デフォルトの名無しさん [sage] 2025/01/18(土) 11:15:32.70 ID:CaguG0TX(5/7) AAS
Rustではファイル名をWTF-8で扱うけどWTF-8で文字列処理すると危なくね?ってそれだけの話だよ
UTF-8の話と混同して絡んできたのはあんたじゃね
187: デフォルトの名無しさん [sage] 2025/01/18(土) 11:36:02.21 ID:CaguG0TX(6/7) AAS
もう自分が何書いてるかもわかってなさそう
もう一度読んで?
190
(2): デフォルトの名無しさん [sage] 2025/01/18(土) 12:03:49.92 ID:CaguG0TX(7/7) AAS
>>188-189
型としてはOsStringとしてラップされてて、中身を取り出したらWindowsではWTF-8
不正な文字コードが入りうるのはどのOSでも同じだけどバイト列そのままな他OSと異なりWindowsだとUTF-16との変換も挟まって危なそうだなあって

(ちなmacOSやあとBSDのzfsなんかだと不正な文字コードは最初から入らないらしい?)
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.019s