2

URL https://cesiumjs.org/releases/1.21/Build/Cesium/Cesium.jsに対してsrihash.orgを使用して次のコードを生成しました。

<script src="https://cesiumjs.org/releases/1.21/Build/Cesium/Cesium.js"
integrity="sha384-CAN0Iz/H09oATWPeJZclEOAM/nF1cq3DSuAbxi9IMbZIx8m3ERInrpuk11n+lHRq"
crossorigin="anonymous"></script>

整合性チェック済みのスクリプトを含むページを読み込もうとすると、Windows の Chrome 50 で次のエラーが発生します。

計算された SHA-256 整合性「vGCl/67DuYY5UzwNQGGpYh2gztA4PhvD+I4pcX7TWcU=」を持つリソース「 https://cesiumjs.org/releases/1.21/Build/Cesium/Cesium.js 」の「整合性」属性で有効なダイジェストを見つけることができませんでした。リソースがブロックされました。

また、次を使用して、手動でハッシュを生成しようとしました (Windows では、openssl-1.0.2h)。

openssl dgst -sha384 -binary Cesium.js | openssl base64 -A

その結果:

X5EHALkqk8r9hyCKwav7y+6BOUg2dRH90/qSxdytan2SQQB9g8jsYYWLDKzNeKx4

このハッシュは、Cesium.js を Chrome でロードするときに機能します。ただし、これにより、2 つのハッシュのうちどちらが正しいかという疑問が生じます...MITM 攻撃の可能性は低いとはいえ、行末またはエンコーディングに関係があると思います。Cesium.jsWindows の改行があるようで、Chrome での読み込みの HTTP レスポンスを以下に添付します。

2 つのハッシュの違いはどのように説明でき、どちらが正しいのでしょうか?


Cesium.js の HTTP 応答ヘッダー:

HTTP/1.1 200 OK
Cache-Control: max-age=172800
Content-Length: 494091
Content-Type: application/javascript
Content-Encoding: gzip
Last-Modified: Mon, 02 May 2016 15:12:32 GMT
Accept-Ranges: bytes
Server: Microsoft-IIS/8.5
x-amz-id-2: giU2DeYQi87OAkuyr2qKeZx8KRihIY7TV9qcJShi/YVl+C5K50mHeSLFWYhA8k5Oc+A50Oxjh/4=
x-amz-request-id: 112881D9D52248F6
X-Powered-By: ARR/3.0
X-UA-Compatible: IE=edge
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type,X-Requested-With
Date: Mon, 30 May 2016 12:49:46 GMT
4

2 に答える 2

0

ご想像のとおり、これは明らかにエンコーディングに関連する chrome のバグです。他の人が他のスクリプトの問題を報告しています。

Chrome と openssl の間の不一致については、このバグ ページを確認してください。

一時的な回避策として、追加します

vGCl/67DuYY5UzwNQGGpYh2gztA4PhvD+I4pcX7TWcU=

信頼できる SHA256 整合性属性に (ダウンロードしたスクリプトが実際に正しいものであることを確認した後)。

Chrome はおそらく、特別なエンコーディングを使用して、解凍する前にこのハッシュを計算しています。

于 2016-06-07T12:18:13.993 に答える