0

だからいくつかのこと。第一に、病気であるため、これを理解するのに適切に集中できないようです.

古いコードで構築された古いサイトを持っているクライアントがいます。コードには、インジェクションと攻撃を可能にするいくつかの極端な脆弱性がありました。このプロジェクトに参加して以来、物事をかなり引き締めてきましたが、実際には問題はありませんでした。しかし、以前のハッキングから長引く問題と思われるものを見つけました。

データベースには、記事の内容を保存するための「コピー」というフィールドがあります。それでは本題です。ハッキング以来、「バイアグラ」という単語が含まれる行が 52,000 行あります。したがって、コピー フィールドとビュー ソースのコードをよく見ると、次のようになります。

for the little kids in the neighborhood.<div style="display: none;">

基本的に、上記のようにスタイルが設定された開始および終了の div タグ。そのため、ページに視覚的にレンダリングされませんが、ソースを表示したり、「検索エンジンのスパイダー」がやってくると、それが表示されます。article_image ディレクトリにアップロードされた .php ファイルがなぜ Webmaster Tools でインデックス化されていたのか、一生わからなかった - 今夜まで。今、私はその理由を知っています。

だからここに私が必要なものがあります。データベースの各行 (52k 個) には例として与えられたもの ( <div style...>) の部分があり、それらはすべて元のコンテンツの後に表示されるため、がらくたをきれいにするループに追加できるものが必要です。コピーフィールドの混乱を解消します。str_replace メソッドの方法を取ることもできますが、それは長すぎて、すべてのものを取得できるという保証はありません。

それで - 何か提案はありますか?

4

1 に答える 1

5

これを試してください:(「コンテンツ」が記事のコンテンツを含む列の名前であると仮定します)

UPDATE `copy` SET `content`=
     SUBSTR(`content` FROM 1 FOR LOCATE('<div style="display: none;">',`content`))
     WHERE `content` LIKE '%<div style="display: none;">%';

これらの注射は常に記事の最後にあることを示したので、これでかなりうまく一掃されます。ただし、最初にバックアップ コピーを取得することを強くお勧めします。

于 2013-01-11T02:44:25.387 に答える