この記事では、PHP の Y2K38 脆弱性に対する解決策を例とともに分析します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
Y2K38 (Unix Millennium Bug としても知られています) この脆弱性は、すべての 32 ビット システムで時刻を記録するために UNIX タイムスタンプ整数を使用する PHP およびその他のプログラミング言語に影響します。
整数変数を保存できる最大時間は、2038 年 1 月 19 日 03:14:07 です。この時間を超えると、整数値はオーバーフローします。
1970 年 1 月 1 日から 2038 年 1 月 19 日火曜日 03:14:07 UTC まで、2^31 – 1 は 0x7FFFFFFF を超えました。多くのプログラマーがこれを目にしたことがあるでしょう。ビット システムでは、これは最大の符号付き整数を表します。秒で表すと約 68.1 年に相当し、まさに 1970 年から 2038 年の数字に相当します。
32 ビット システムで 2038 年 1 月 19 日 03:14:07 以降に表示される日付はオーバーフローします。
では、64 ビット システムは影響を受けますか?
理論的にはいいえ、テストすることを強くお勧めします。 64 ビット システムで保存できる最も遠い日付は、現在の宇宙年齢の 21 倍、292 億年です。
32 ビット マシンでは、DateTime クラスを使用してこの問題を解決できます。 (PHP5.2でこのクラスの導入が始まり、バージョン5.3では一部のメソッドが拡張されました)
コードは次のとおりです:
この記事が皆さんの PHP プログラミングの学習に役立つことを願っています。
具体的な脆弱性の説明がなければ何とも言えません
1. お使いのネットワーク タイプは PHP によって開発されていませんが、PHP プログラムを実行する権限があるため、PHP 脆弱性プロンプトが表示されます。
2. 普遍的な技術的脆弱性はどの言語にも存在する可能性があり、スキャンされたイメージはそのまま PHP の脆弱性であると言えます。
3. A 言語リクエストに対する応答は正常ですが、PHP リクエストに対する応答は異常です。これはヒットタイプなので無視できます。
4. この脆弱性の名前は本当に思いつきません。「php 脆弱性」だけです
eesafe Website Security Alliance の無料 Web サイト脆弱性スキャンとトロイの木馬検出