SonarQube ではなくて、
調度、
目次
[TOC]
参考
sonar: Linting the web forward - Microsoft Edge Dev BlogMicrosoft Edge Dev Blog
Microsoftが
前提
過去に、PageSpeed Insights
、Observatory by Mozilla
の
対応状況に
Web UI から Lint を 実行する
実行方法
sonar’s online scanner に
サイトURLを
入力 少し
待つ
Scan 結果を表示する PERMALINK が 生成されます。
少し待つと 結果に 遷移するので 少し待ちます。 実行結果
以下のような実行結果の サマリーが 出力されます。
指摘の 内容に 対処する
1 WARNING
、55 ERROR
が
分類名 | 日本語 | Notes |
---|---|---|
Accessibility | アクセシビリティ | バリアフリー的なチェック観点 |
Interoperability | 相互運用性 | ブラウザ依存、言語の違いで等を考慮しているか |
Performance | パフォーマンス | パフォーマンス観点で最適化されているか |
PWA | プログレッシブウェブアプリ | PWAに特化したチェックの観点だと思われます。 |
Security | セキュリティ | HTTP Header で付与が必要なものが付与されているかチェックしていそうです。 |
各カテゴリごとの
Accessibility
- [WARNING] Error executing script: “TIMEOUT”. Please try with another connector スクリプトが
タイムアウトして、 うまく チェックできてないと いう WARNING
がでていました。
sonar はaXe
という ツールで Accessibility を チェックしているようなのですが、 どうも それが 上手く 動いてないと いう 警告のようで、 そもそも チェックが できていないので、 一旦対処は スルーします。
aXe
による チェックは、 Chrome plugin aXe - Chrome ウェブストア でも 実施できそうなので、 そちらで 実施してみようかなと 思います。
Interoperability
[ERROR] ‘content-type’ header should have ‘charset=utf-8’
js ファイルと、css ファイルに、 content-type に charset 属性が なく、 付与すべきと いう 警告です。
使用しているHTTP サーバは Apache の ため、 以下 AddCharset を httpd.conf に 追加して 対処しました。 AddCharset utf-8 .css .js
‘content-type’ header should have media type ‘text/javascript’ (not ‘application/javascript’) Javascritpt の
content-type の media type 指定が、 'application/javascript'
になっていると いう 警告です。
これは、3rd party Javascript で 出力されていたため、 対処しませんでした。 ‘content-type’ header should have media type ‘image/x-icon’ (not ‘image/vnd.microsoft.icon’)
これは、favicon.ico
のcontent-type に、 'image/vnd.microsoft.icon'
が設定されており、 'image/x-icon'
に変更すべきと いう 警告でした。
CentOs 、Apache では /etc/mime.types
に拡張子と、 content-type の マッピングは 記述されているので、 記載を 修正しました。 image/vnd.microsoft.icon image/x-icon ico
‘x-ua-compatible’ header was not specified これは、
Meta tag usage is discouraged, use equivalent HTTP header
の警告と セットに なります。
x-ua-compatible
をhttp ヘッダに 付与すべきと いう 警告に なります。
httpd.conf には以下の Set Header 指定を 追加し、 HTML上から、Header set X-UA-Compatible: IE=edge
<meta http-equiv="X-UA-Compatible" content="IE=edge">
を削除しました。
上記 Header の追加後、再度チェックを実行したところ、今度は、付与する必要のないリソースのヘッダにX-UA-Compatible: IE=edge
が付与されてしまったので、最終的に以下のように定義を追加しました。1<IfModule headers_module> Header set x-ua-compatible: "IE=edge" </IfModule> <IfModule headers_module> <FilesMatch "\.(js|css|otf|eot|woff|ico|jpg|woff2)$"> Header unset x-ua-compatible </FilesMatch> </IfModule>
Meta tag usage is discouraged, use equivalent HTTP header
'x-ua-compatible' header was not specified
の警告に 対する 対応が、 この 警告に 対する 対処に なります。 A charset meta tag was already specified
<meta content="text/html; charset=utf-8" http-equiv="Content-type">
で、charsetを指定しているが、既に<meta charset="utf-8">
で定義しているので不要という警告になります。
meta 要素 - HTML | MDN に meta タグ の役割が記載されています。
HTML 5 では指定は不要なので、<meta content="text/html; charset=utf-8" http-equiv="Content-type">
の記載は削除します。
Performance
‘x-xss-protection’ header is not needed
3rd party のリソースで 発生している エラーでした。 対処できないので 無視します。
不要なx-xss-protection
ヘッダが付与されていると いう 警告です。 ‘x-frame-options’, ‘x-xss-protection’ headers are not needed
3rd party のリソースで 発生している エラーでした。 対処できないので 無視します。
不要な'x-frame-options', 'x-xss-protection'
ヘッダが付与されていると いう 警告です。
PWA
- No ‘apple-touch-icon’ was specified
apple-touch-icon
の記述が ないと いう 警告です。 180*180
のicon を 配置し、 以下の タグを 追加する ことで 解消されました。 <link rel="apple-touch-icon" href="{% static "img/apple-touch-icon.png" %}" />
Security
your_domain
s grade X doesn’t meet the minimum A- required.
Qualys SSL Labs
のSSL チェックの グレードが X
だったという エラーです。
Qualys SSL Labs のSSL脆弱性診断(SSL Server Test)に ついて | 株式会社セブンネット
すぐには対処できなそうですので、 後日対処していこうと 思います。 2 no-protocol-relative-urls
これは外部 URL の プロトコル表記 を 省略していると、 出力されます。
画像 URL 等 多数プロトコル省略して記述している ため、 対応を 見送りました。 ‘x-content-type-options’ header was not specified
x-content-type-options
を付与していない リソースで 警告が 出力されていました。
3rd party のリソースだったので、 対処できないため 無視します。 validate-set-cookie-header:
Invalid date format in 'expires' value of the 'set-cookie' header to set 'xxxxxxxx'. The recommended format is: Sun, 28 Oct 2018 13:35:42 GMT
cookie のexpires の 日付フォーマットが、 推奨される フォーマットと 異なると いう 警告です。
これはdjango の 'expires'
日付フォーマットが以下の 値で、 設定を 変更する 拡張ポイントが 現状(2017/10/30) でないため、 対処しませんでした。 - 日付フォーマット
'Wdy, DD-Mon-YYYY HH:MM:SS GMT'
ちなみに、
日付の フォーマットは、 django.utils.http.py
のcookie_date
で指定しています。 - cookie_date
def cookie_date(epoch_seconds=None): """ Formats the time to ensure compatibility with Netscape's cookie standard. Accepts a floating point number expressed in seconds since the epoch, in UTC - such as that outputted by time.time(). If set to None, defaults to the current time. Outputs a string in the format 'Wdy, DD-Mon-YYYY HH:MM:SS GMT'. """ rfcdate = formatdate(epoch_seconds) return '%s-%s-%s GMT' % (rfcdate[:7], rfcdate[8:11], rfcdate[12:25])
- 日付フォーマット
no-vulnerable-javascript-libraries
jQuery@2.1.1 has 2 known vulnerabilities (1 medium, 1 low). See https://snyk.io/vuln/npm:jquery for more information.
脆弱性がある、 javascript ライブラリを 使用していると いう 警告です。
jQueryのversion 2 系の 最新version である、 jquery-2.2.4.min.js
に更新しました。
しかし、2.2.4
でも脆弱性の 警告は 消えず、 対処する ことを あきらめました。
警告対処後に チェックを 再実行
警告対処後に、
1 WARNING
、35 ERROR
が
まとめ
Wen サイトの
以下まとめます。
Sonar は、
Lint ツールを 幾つか 統合して おり、 総合的な チェックが 実施できる。 Web UI からは、
Accessibility 関連の チェックは 現状実行できない。 自ドメイン以外の
ドメインの リソースで 警告がでる。 リソースを 読み込まないか、 無視するかの 対応に なる。
Accessibility 関連の
以上です。
コメント