今年の初めに Discuz! や Ecshop に初めて触れたとき、私は驚いたことを覚えています。これほど成熟した製品が実際にあるのです。無料。従来のソフトウェア開発に従事する私たちはどのように生活しているのでしょうか?また、これらの製品を製造する企業はどうやって生き残っているのだろうかとも思います。
私の会社のウェブサイトは Ecshop と Discuz を使用してプロトタイプ化されています。 、開発者から引き渡された後、二次開発を行ってコードを深く理解し、そのとき初めて、初期の疑問に対する答えが得られました。
これらの製品は、本当に本格的なアプリケーション環境をサポートできないと言えます。
1) すべてのデータベースアクセスには mysqli 接続が必要ないため、プリペアドステートメントは使用できず、すべてが結合されます。
これらのシステムはすべて SQL スプライシングを使用してデータベース (主に mysql) にアクセスします。 Ecshop の例を挙げてください:
リーリーまたは類似のもの
リーリー
この種のステートメントが時折現れるのは理解できますが、これがどこでも (Ecshop のように) ある場合は、データベースの入門レベルしか理解していない人の手に渡るべきです。なぜなら、彼はプリペアドステートメントの概念をまったく使用していなかったからだ。
したがって、数人がこの種のシステムを使用すると、大量の同時実行性を備えた稲妻のように高速になるはずで、バックエンド データベースはお粥の鍋と化す可能性があります。
データベースに接続する正しい方法は次のとおりです:
リーリーの代わりに
リーリー正しい SQL ステートメントは次のようになります:
リーリー前のものの代わりに。
2) システムのセキュリティは非常に貧弱です
プリペアドステートメントが必要ないため、プログラマが注意しない限りどこでも SQL インジェクションが可能です。しかし、彼らのコードを見ると、彼らはまったく注意を払っていないと言えます。これらのシステムのおかげで、ユーザー入力のエスケープはほとんど、またはまったくありません。
すでに不正なコードの場合、正しい使用法は 2 行目がある必要があります:
リーリーしかし、これらのシステムでは、上記の 2 行目はほとんど見られません。
これによって引き起こされる問題は、これらのシステムをターゲットとするロボットが多すぎることです。基本的に、フォーラムがオンラインになるとすぐに、ロボットによって投稿されたスパム投稿や広告投稿の標的になります。
これらのシステムに関する私の研究はまだ表面的ですが、これら 2 つの項目を見た後、このシステムが学習のためのものであることはすでに理解しています。これらの製品を開発する企業は非常に高い基準を持っていますが、高品質のコードは商用の有料製品で使用されるべきです。お買い得に買えるとは思わないでください。
転載する場合は出典を明記してください:cnblogsのCamel by the Seaブログ。元のブログのアドレス: http://www.cnblogs.com/yingjiang/p/4750408.html