1

この質問は、ユーザー入力を処理する際の人々の個人的な意見についての議論を目的としています。

私が取り組んでいるプロジェクトのこの部分は、IRCチャットと同様の方法でユーザー入力を処理します。たとえば、チャットやアクションの実行などのための設定コマンドなどがあります。

ここで、この入力を解析するために選択できるいくつかのオプションがあります。正規表現を使用したり、直接解析したり(つまり、サポートされているすべてのコマンドを含む大きなswitchステートメント、ユーザー入力の最初のx文字をチェックするだけ)、または狂ったようになってFlexに似たパーサーを追加することもできます。 /Bisonの実装。私が検討していたもう1つのオプションは、XMLファイルですべてのコマンドを定義して、それらをコード実装から分離することでした。

それで、コミュニティの考えは何ですか?

4

1 に答える 1

1

私はすべての素敵な混合バッグで行きます。

明らかに、入力をサニタイズする必要があります。入力がSQLインジェクション、XSS、CSRFなどを防ぐ場所に応じて、そこに厄介なものがないことを確認してください...

ただし、入力がクリーンな場合は、コマンドとして意図されたものをキャッチし、必要なすべてのサブマッチ(コマンドパラメーターなど)を取得する正規表現を使用して、ある種のディスパッチャー-switchステートメントなどを使用できます。

カバーは実際にはありません-常に常に4倍であることを除いて、ここではすべてのベストプラクティス-常にユーザー入力がサニタイズされていることを確認してください。それとは別に、あなたのケースに最も適していると思われるものを使用してください。

明らかに、問題があり、その問題を解決するためにreg expsを使用することを考えている場合、2つの問題がありますが、慎重に使用すると、これまでで最高のものであると言う人がいます。正規表現モンスターは、読みやすさが非常に悪いため、すぐに読み取ることができることを覚えておいてください。

于 2009-04-23T16:00:37.033 に答える