質問: どういうタグをつければいいのかわからないので、タグは適当です^^; 今一緒に仕事をしている人(仮にAさんとします)とコーディングというか実装というか、その辺りで考え方が違いすぎて全く噛み合わないので、 どちらが正しいのか識者の方に意見を伺いたいと思います。 WEBアプリケーションの開発をしています。 Aさんが作った部分を私がテストしたらサーバーサイドで入力値の長さをチェックしていませんでした。 それを指摘したことろ、Aさんは「何言ってんだコイツ」みたいな感じで「inputにmaxlength付けてるのになんでそんな無駄なことしなきゃいけないんだ」と反論されてしまいました。 私はmaxlengthなんてブラウザの開発者ツールで変更できるし、サーバーサイドでも長さチェックすべきと言い返しましたが 鼻で笑われました。 Aさんが作った既存のシステムでinput要素のmaxlegthを変更して長いデータを送ったところエラー画面に遷移しました。 たぶんinsert文でコケたんだと思いますが、Aさんは「そんなことする奴は滅多にいないし、仮にいたとして何か問題でも?データが消えたり壊れたりするわけでもないし。」と言っていました。 自分の取り越し苦労が過ぎるのか、Aさんがルーズ過ぎるのか、どっちでしょうか?
回答: 基本的に仕様書がどうなっていようがサーバーでの入力チェックは必須です。 フロント側での入力チェックはユーザーの利便性のためです(入力の不備を早い段階で教えるため)、フロント側で入力チェックするからOKなどという仕様書は見たことがありませんし、記載していないのならば確認すべき基本的な事項です。 どんなシステムであれサーバー側の入力チェックなしにDBに突っ込むことなど有りえません、というかSQLインジェクションとか大丈夫なのか心配になってきます。