3

Tastypie を使用してユーザーの入力をサニタイズする最も効果的な方法は何ですか? 現在、ユーザーがhiのようなものを入力すると、HTML タグが保存されるため、表示されるとテキストが太字で表示されます。各リソースの obj_create を変更する以外に、すべての入力をサニタイズするにはどうすればよいですか?

また、私は Web セキュリティの初心者なので、フロントエンドでもユーザーの入力をサニタイズする必要がありますか? POSTリクエストをtastypie APIに送信する前に入力をサニタイズする必要があるのか​​、それともtastypieが入力を処理しているときに入力をサニタイズする必要があるのか​​ わかりません。

編集: <%= %> ではなく <%- %> でデータを表示することにより、アンダースコア テンプレートで HTML をエスケープできることがわかりました。アンダースコアがデフォルトでこれを行わないのはなぜですか? セキュリティ上のリスクが大きいと感じています。うっかりどこかでこれをするのを忘れたら、私はめちゃくちゃです。

上記でフロントエンドのセキュリティ問題は解決したと思いますが、バックエンドはどうでしょうか?SQL インジェクションに対して脆弱かどうかを確認する方法はありますか? POST/PUT リクエストを実行すると、tastypie は入力をサニタイズしますか?

4

2 に答える 2

1

信頼されていないユーザー入力をブラウザーにレンダリングしないでください。|safeブラウザーでそれを見る唯一の方法は、出力フィルターを使用している場合です。そうしないでください。モデルでもプロパティを mark_safe=True として設定しないでください。

于 2012-05-04T23:01:46.787 に答える
0

次のように、ブラウザへの途中で危険なフィールドを上書きするリソースに脱水メソッドを追加しました。

def dehydrate(self, bundle):
    bundle.data['field_to_sanitize'] = bundle.data['field_to_sanitize'].replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;").replace("'", "&#39;").replace('"', "&quot;")
    return bundle

これは最善の解決策ではありませんが、最も危険なエンティティの多くを逃れることができます。便利な htmlescape 関数があれば、それを使用できます。

于 2012-09-03T08:10:50.020 に答える