![見出し画像](https://assets.st-note.com/production/uploads/images/141019860/rectangle_large_type_2_c3e04026152bd8ef5a9fe5218e1a6f0f.png?width=1200)
システム開発とセキュアプログラミング
システム開発では、まずSOA(サービス指向アーキテクチャ)を採用し、サービス中心に考え、サービス同士の独立性を高めることが重要です。これにより、システム全体の柔軟性と再利用性が向上します。次に、CMMIレベルに従って開発プロセスを進めます。CMMIには、1. 初期、2. 管理、3. 定義、4. 定量的管理、5. 最適化の5つのレベルがあります。これらを順に達成することで、品質と効率が向上します。
システム開発において、会社で作成したプログラムの著作権はその会社(法人)に帰属し、特許権申請前の技術には先使用権が認められることも覚えておくべきです。また、プログラミング言語の選定に際しては、C++はどうしても必要な場合を除き、なるべく使用しないことが推奨されます。
セキュアプログラミングにおいては、バッファオーバフローを防ぐために、文字列の長さを制限する関数を利用することが重要です。また、Javaにはポリシやパーミッション、カプセル化などのセキュリティ機能が備わっており、レースコンディションが発生するため、synchronizedを使用してスレッドを同期させることも必要です。ECMAScriptでは、プログラムの規模が大きくなると誤りが入りやすくなるため、注意が必要です。
さらに、Same-Originポリシを利用してスクリプトの実行を制限し、拒否をデフォルトにしてシンプルを維持することが推奨されます。セキュリティ設計はなるべく小さく、最小限の権限で行うべきです。クロスサイトスクリプティング対策としては、<script>タグ以外にも注意し、SQLインジェクション対策としては、JavaではPreparedStatementを使用することが重要です。
この記事が気に入ったらサポートをしてみませんか?