バグ報告 > その他 > SC_Utils::sfIsInt()が不適切に使用されています |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
pantacle |
投稿日時: 2010/9/6 21:13
対応状況: −−−
|
長老 ![]() ![]() 登録日: 2009/6/29 居住地: 富山 投稿: 242 |
SC_Utils::sfIsInt()が不適切に使用されています LC_Page_Admin_Order_Edit.php等でSC_Utils::sfIsInt()が不適切に使用されています。
[EC-CUBE] EC-CUBE ver.2.4.4 で検出したけどもっと前からの問題。 SC_Utils::sfIsInt()は、引数がINT_LEN(8)桁までの「数値」かを判定している関数なので、 これの仕様も正直どうかとは思いますが、 オーダーIDなど明らかに8桁以上になりうる値の判定にも使用されており、地雷になる可能性があります。 試験環境と本番環境を区別する為にオーダーIDを大きな数字にしておこう、とかするとハマります。 というかハマりましたので愚痴ついでに。 既出ならご容赦ください。 -- pantacle(元mahalo_c) |
seasoft |
投稿日時: 2010/9/6 22:07
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7334 |
Re: SC_Utils::sfIsInt()が不適切に使用されています 私も以前に気になりまして、コミュニティ版ではコメントを付けてあります。
http://svn.ec-cube.net/open_trac/changeset/18273 INT_LEN の定義が由来なので、バグとも言い切れないので、XXX 扱いですが。 # まぁ今では、金額以外は8桁上限が染み付きました。
|
pantacle |
投稿日時: 2010/9/6 23:27
対応状況: −−−
|
長老 ![]() ![]() 登録日: 2009/6/29 居住地: 富山 投稿: 242 |
Re: SC_Utils::sfIsInt()が不適切に使用されています SC_Utils::sfIsInt()も問題で、関数名通りの処理して無いですよね。
実はis_numeric()で判定しているので、 関数名だけ見て整数でなければfalseが返ると思い込んじゃうと ハマる。 本来なら、 整数かを判定する関数と 整数かつINT_LEN桁以内かを判定する関数の 2種類必要なのだと思います。 -- pantacle(元mahalo_c) |
seasoft |
投稿日時: 2010/9/6 23:40
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7334 |
Re: SC_Utils::sfIsInt()が不適切に使用されています > SC_Utils::sfIsInt()も問題で、関数名通りの処理して無いですよね。
私も直感的に、そう感じました。 そのために、SC_Utils#sfIsInt にコメントをつけた次第です。 # まぁ、仕様書が無い状況では、何が「正」か分からないですが・・・
|
seasoft |
投稿日時: 2010/9/11 17:49
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7334 |
Re: SC_Utils::sfIsInt()が不適切に使用されています せっかくの問題提起がこのまま埋もれてしまうのはもったいないので、とりあえず既存チケットのコメントとして記載させていただきました。
http://svn.ec-cube.net/open_trac/ticket/651#comment:2 とりあえず、仕様としての白黒がハッキリすると良いなと考えています。
|
nanasess |
投稿日時: 2010/9/11 22:06
対応状況: −−−
|
神 ![]() ![]() 登録日: 2006/9/9 居住地: 投稿: 2280 |
Re: SC_Utils::sfIsInt()が不適切に使用されています 8桁と定めている理由もわかりませんし, is_numeric で十分だと思うので, 廃止してしまっても良いかと思ってます
|
AMUAMU |
投稿日時: 2010/9/13 6:22
対応状況: −−−
|
神 ![]() ![]() 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: SC_Utils::sfIsInt()が不適切に使用されています intチェックを始め各種入力値チェックは実行速度や安全性、将来のプラグインによる多様化時のセキュリティチェックを考えると、本当はFilter関数とかに移行出来るとベストな気がしますが、Filter関数はPHP5.2以降でしか利用出来ないので中々難しいですかね・・・
参考URL http://www.php.net/manual/ja/book.filter.php
|
seasoft |
投稿日時: 2010/9/13 7:02
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7334 |
Re: SC_Utils::sfIsInt()が不適切に使用されています > intチェックを始め各種入力値チェックは実行速度や安全性、将来のプラグインによる多様化時のセキュリティチェックを考えると、本当はFilter関数とかに移行出来るとベストな気がしますが、Filter関数はPHP5.2以降でしか利用出来ないので中々難しいですかね・・・
個人的には、PHP4 とか 5.1 とか、切っちゃえ! という勢いですが、プロジェクトとしては、なかなかそうもいかないようですね・・・ しかし、将来的に移行しやすいように、モジュールの機能・粒度を参考にする等は、今でも出来そうですね。
|
pantacle |
投稿日時: 2010/9/13 9:16
対応状況: −−−
|
長老 ![]() ![]() 登録日: 2009/6/29 居住地: 富山 投稿: 242 |
Re: SC_Utils::sfIsInt()が不適切に使用されています > 個人的には、PHP4 とか 5.1 とか、切っちゃえ! という勢いですが、プロジェクトとしては、なかなかそうもいかないようですね・・・
PHP4は流石に切っても良いでしょう。 どうしてもPHP4の人には現行の2.4系を使って貰えば良い話ですし。 かつてのApacheを見習って土台から見直した、PHP5対応のEC-CUBE3というのは魅力的....
|
AMUAMU |
投稿日時: 2010/9/13 9:19
対応状況: −−−
|
神 ![]() ![]() 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: SC_Utils::sfIsInt()が不適切に使用されています MySQL4.x系の切り捨てはしたわけですしね・・・
株式会社ロックオン社の立場的に考えると、ホスティングパートナーにPHP4.x系使ってる所が無いなら思いきって・・・と思うのですが ![]() ※いたら厳しそう
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |