受託開発を行う上で、法律にどこまで詳しくなる必要があるか?
とても悩ましい問題です。
例えば、下記のようなシステムを考えてみます。
・メールアドレスだけでログインできる。
・その他のアクセス制御機能はない。
・ログインできればログインした人の個人情報にアクセスできる。
セキュリティ的には問題外です。
クライアントからこのような要求仕様が出てきた場合にはどのように対処すべきでしょうか?
この例ではあきらかにセキュリティ上の欠陥があると言えるので、クライアントに進言すべきです。では、なぜこれが「あきらかにセキュリティ上の欠陥がある」と言えるのでしょうか?
開発者としての直感でしょうか?
もちろんその直感は正しいものです。
もう少し法律的に考えると、この例では、悪意のある第三者が適当なメールアドレスを打ち込むことで、ログインすることができたとしても不正アクセス禁止法に抵触しない可能性が高いというところがポイントになります。不正アクセス禁止法はアクセス制御されたサイトに対して適用されます。アクセス制御とは、「当該アクセス管理者によってその内容をみだりに第三者に知らせてはならないものとされている符号(識別符号)」を用いて制御が行われていることを示しており、メールアドレスだけでは識別符号とみなされる可能性が低いからです。
つまり、今回の例ではアクセス制御されているサイトとはみなされず、ここに悪意を持ってアクセスしてきても、不正アクセス禁止法に抵触しないのです(推測)。
さあ、ここで問題です。
もっと複雑で、それがセキュリティ的な欠陥なのか、それともそこを突く第三者が悪い(不正アクセス禁止法に抵触する)のか判断できない場合はどうでしょうか?
おそらく、そういったケースの方が圧倒的に多いはずです。システム開発者は法律家ではないのですから。前述の簡単な例ですら推測の域をでないものであります。
では一体開発を請け負う私たちはどのように考えればよいのでしょうか?
開発者は開発者らしく対応すればよいのです。まず、法律に照らし合わせた判断をしないということです。法律家ではないのですから実際問題ムリですし、そこまでは業務範囲として求められているものではないのですから。
そのかわり、想像されるありとあらゆる不正アクセスの可能性を指摘してあげましょう。これは義務だと思います。それを受けて、クライアントの方で判断をするというのが正しい流れだと思います。
【結論】
受託開発者は法律に詳しくなる必要はありません(詳しければ尚良いのですが、生半可な知識は逆に怪我の元です)。その代わり、不正アクセスなどを含む様々なクラッキングの手法に詳しくなり、それをクライアントに教えてあげるべきです。
セキュリティ的な欠陥を知りながら、「でも、これがクライアントの要求仕様だから」とそのまま進めるのは最低の対応です。
※自社開発ではこうは行きません。誰かが法律に詳しくなり、問題をしっかり追及する必要があります。