ホームページ  >  記事  >  運用・保守  >  Linux サーバーを使用した SQL インジェクション攻撃から Web インターフェイスを保護します。

Linux サーバーを使用した SQL インジェクション攻撃から Web インターフェイスを保護します。

WBOY
WBOYオリジナル
2023-09-09 13:21:171219ブラウズ

Linux サーバーを使用した SQL インジェクション攻撃から Web インターフェイスを保護します。

Linux サーバーを使用して Web インターフェイスを SQL インジェクション攻撃から保護する

インターネットの発展に伴い、Web インターフェイスの使用はますます一般的になり、その使用量は増加しています。 Web アプリケーションの数 プログラムは SQL インジェクション攻撃の危険にさらされています。 SQL インジェクション攻撃は、Web アプリケーションでのサニタイズされていないユーザー入力を悪用して、データベースで悪意のある SQL ステートメントを実行する方法です。このようにして、攻撃者は機密データを取得したり、データベースの内容を変更したり、サーバーを完全に制御したりする可能性があります。

Web インターフェイスを SQL インジェクション攻撃から保護するために、Linux サーバーを使用して一連の防御手段を実装できます。この記事では、いくつかの一般的な防御方法を紹介し、対応するコード例を示します。

  1. パラメータ化されたクエリを使用する
    パラメータ化されたクエリは、SQL インジェクション攻撃を防御するために最も一般的に使用され、効果的な方法の 1 つです。パラメーター化されたクエリは、ユーザー入力を SQL ステートメントの一部として取得するのではなく、クエリ パラメーターとしてデータベースに渡すことによって実行されます。これにより、悪意のあるユーザーが入力した SQL ステートメントが実行されるのを防ぎます。

以下は、Python の Flask フレームワークを使用して実装されたサンプル コードです:

from flask import request, Flask
import sqlite3

app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    username = request.form['username']
    password = request.form['password']

    conn = sqlite3.connect('database.db')
    cursor = conn.cursor()

    # 使用参数化查询
    cursor.execute('SELECT * FROM users WHERE username=? AND password=?', (username, password))

    user = cursor.fetchone()
    
    if user:
        return '登录成功'
    else:
        return '用户名或密码错误'

if __name__ == '__main__':
    app.run()
  1. 入力の検証とフィルタリング
    パラメーター化されたクエリに加えて、ユーザーのクエリも実行する必要があります。 input ユーザー入力が期待される形式と仕様に準拠していることを確認するために検証およびフィルター処理します。たとえば、ユーザーが数値を入力する場合、正規表現を使用して、入力が有効な数値であることを確認できます。

以下は、Python の Flask フレームワークを使用して実装されたサンプル コードです。

import re
from flask import request, Flask

app = Flask(__name__)

@app.route('/search', methods=['GET'])
def search():
    keyword = request.args.get('keyword')

    if not re.match(r'^[a-zA-Z0-9]+$', keyword):
        return '关键字包含非法字符'

    # 执行查询操作

    return '查询成功'

if __name__ == '__main__':
    app.run()
  1. アクセス許可を制限し、安全なアカウントを使用します
    データベース レベルでは、Web を提供できます。アプリケーションは安全なデータベース アカウントを使用し、必要な操作のみに制限します。これにより、攻撃者によって悪用される潜在的なリスクが軽減されます。

たとえば、MySQL データベースでは、クエリと挿入の権限のみを持つアカウントを作成し、このアカウントを使用して動作するように Web アプリケーションを構成できます。

  1. ネットワーク セキュリティ設定
    Web アプリケーション レベルでの防御に加えて、Linux サーバー上でも対応するネットワーク セキュリティ設定を行う必要があります。

まず、ファイアウォール構成を使用して、信頼できる IP アドレスからのリクエストのみが Web インターフェイスにアクセスできるようにします。

第 2 に、HTTPS プロトコルを使用してデータ送信を暗号化し、データの盗聴による機密データの漏洩のリスクを防ぐことができます。

最後に、サーバーのオペレーティング システムと関連ソフトウェアをパッチで定期的に更新し、既知のセキュリティの脆弱性を修正することをお勧めします。

要約すると、Linux サーバーのさまざまな機能を利用して、Web インターフェイスを SQL インジェクション攻撃から保護できます。パラメータ化されたクエリ、入力検証とフィルタリング、権限の制限と安全なアカウントの使用、およびネットワーク セキュリティ設定の実装により、Web アプリケーションでの SQL インジェクション攻撃のリスクを大幅に軽減できます。ただし、セキュリティは継続的なプロセスであり、常に警戒し、防御を継続的に更新および改善する必要があります。

以上がLinux サーバーを使用した SQL インジェクション攻撃から Web インターフェイスを保護します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。