0

したがって、ここでは 900 ページ以上のコード、php コード、それぞれが 1000 行以上の長さで、20000 行以下です... すべて SQL インジェクションに対して脆弱です。そのため、1 年の大半を費やしてすべてのユーザー入力に mysql の実際のエスケープ文字列を組み込むのではなく、コード行を検索して必要な場所に入力するプログラムを作成することを計画していました。すべての投稿変数。これをもっともらしいと思う人はいますか?もしそうなら、どの言語でそれを行うことをお勧めしますか? 私はphpを使用していくつかのアイデアを持っていますが、しっかりしたものはありません. そして、jsが遅すぎるのではないかと心配しています。すべての助けに感謝します

4

2 に答える 2

2

基本的にマジック クォートを有効にしているため、必ずしもこれをお勧めするわけではありませんが、適切に修正する時間がない場合は、これをブートストラップ ファイルに追加して、すべてのスクリプトに含めることができます。

foreach ($_POST as &$v) {
    $db->escape($v); // mysql_real_escape_string() or mysqli or pdo
}
unset($v);

これを変更して、配列の $v をチェックし、それに応じてそれらをエスケープする必要があります。$_GET に対しても同じことを行う必要があります。

これにより sql インジェクションが防止される可能性がありますが、他の問題が発生する可能性があることに注意してください。時間をかけてリファクタリングすることをお勧めします。

于 2012-12-21T19:30:00.977 に答える
1

コメントで述べたように、これを処理するための静的分析ツールを求めるSOの質問が少なくとも 1 つあります。他の複数のプロジェクトで使用されている既存のツールがある場合、通常、誰も使用していないものよりも信頼性が高くなります。

残念ながら、その質問には適切な答えがありません。PHP 静的アナライザーを簡単に検索すると、PHP ソース コード セキュリティ フレームワークPHP_CodeSnifferが見つかりましたが、名前以外は何も知らないので、それを推奨とは見なさないでください。

自分でビルドする必要がある場合、Python タグは、Python で記述したいことを意味します。通常、これは素晴らしい選択だと思います。しかし、このような場合、コードを信頼できるようにするためには、できるだけ多くの人から同意を得ることが重要です。あなたのツールを使いたい人は誰でも PHP を知っているでしょう。

別の可能性が 1 つあります。コードが非常に一貫したスタイルに従っている場合、一般的には適用できませんが、特定のコードのすべての SQL インジェクション ホールを見つける、もっと単純なことを実行できる可能性があります。誰にでもできると納得できるコードを書こうとしているので、この場合、単純さの利点はそれだけの価値があるかもしれません。

あいまいで申し訳ありませんが、かなりあいまいな質問です。私が本当に言えることは、原則としてもっともらしいということだけです。それが実際に実行可能かどうかは、私には本当に推測できません。

于 2012-12-21T20:05:43.957 に答える