2017-09-09 9 views
0

私は助けが必要です。私はPythonを使ってリモートファイルを攻撃しないようにする必要があります。私は以下のコードを説明しています。ここでDjangoとPythonを使用したリモートファイルインジェクションを防ぐ方法

if request.GET.get('file') is not None and request.GET.get('file') != '': 
    file = request.GET.get('file') 
    response = urllib.urlopen(file) 
    lines = response.readlines() 
    return HttpResponse(content=lines, content_type="text/html") 
else: 
    return render(request, 'plant/home.html', {'count': 1}) 

誰かのようなクエリ文字列値を呼び出す場合は、このhttp://127.0.0.1:8000/createfile/?file=https://www.google.co.in/?gfe_rd=cr&dcr=0&ei=N46zWczCGojT8geN-pvwCgその後、リモコンはまた、私は、このリモートファイル混入を防止する必要があり、ここを含めています。

+0

「url」を取得し、リモートファイルの「url」が含まれているかどうかを確認しますか? –

+0

@ MD.KhairulBasar:あなたのアイデアを投稿で共有できますか? – satya

+0

受け入れ可能なファイルのURLは何ですか?ホワイトリスト機能を作成し、それに対するURLをテストする必要があります。不正なファイルのURLは、400の応答になるはずです。 –

答えて

1

get_full_pathを使用して、ビュー内のURLを取得し、ファイルパスに外部URLが含まれているかどうかを確認します。

full_path = request.get_full_path() 

if request.GET.get('file') is not None and request.GET.get('file') != '' and full_path.find('http') == -1: 
    file = request.GET.get('file') 
    response = urllib.urlopen(file) 
    lines = response.readlines() 
    return HttpResponse(content=lines, content_type="text/html") 
else: 
    return render(request, 'plant/home.html', {'count': 1}) 
+0

ここで、 'full_path'がこれを防ぐために検証しています。 – satya

+0

@satya私は自分の答えを更新しました。これが機能するかどうか確認してください。 –

+1

はい、その作業。 – satya

関連する問題