1

私のクライアントが持っているデータベースがハッキングされました。データの再構築を試みています。このサイトでは、SQL Server データベースを使用して従来の ASP を実行しています。ハッカーの弱点がどこにあるのかを突き止め、今のところその侵入口を取り除いたと思います。

データベース内のすべてのテキスト列には、いくつかの html マークアップとインラインの script/js タグが追加されました。

フィールドの例を次に示します。

all</title><script>
    document.write("<style>.aq21{position:absolute;clip:rect(436px,auto,auto,436px);}</style>");
</script>
<div class=aq21>
    <a href=http://samedaypaydayloansonlineelqmt.com >same day payday loans online</a>
    <a href=http://samedaypaydayloan

この例は、列のUsers表にありました。UserRights初期値は でしたがall、追加されたリンクが表示されます。

データベース内の各テーブルの各列のすべてのフィールドを検索し、この余分なマークアップを削除する正規表現スクリプトを作成する必要があります。

基本的に、 を一致させようとすると</table>、その文字列とそれに追加するすべてのものを空白の文字列に置き換えることができます。

これらの追加された文字列はすべて、同じ列の各フィールドで同じです。ただし、各テーブルには複数の列があります。

これは私がこれまで行ってきたことであり、ハッキングされた部分を置き換えていますが、私の正規表現のスキルは....うまくいきませんが、素敵な正規表現がおそらく私を助けてくれるでしょう。

UPDATE [databasename.[db].[databasetable]
set 
UserRights = replace(UserRights,'</title><script>document.write("<style>.aq21{position:absolute;clip:rect(436px,auto,auto,436px);}</style>");</script><div class=aq21><a href=http://samedaypaydayloansonlineelqmt.com >same day payday loans online</a><a href=http://samedaypaydayloan','');

正規表現のヘルプやヒントをいただければ幸いです。

4

2 に答える 2

2

これは私がやったことです(@Bohemianに感謝します):

各テーブルを調べて、どの列が影響を受けているかを確認しました。次に、各列で次のスクリプトを実行しました。

UPDATE [tablename]  
set columnname = substring(columnname, 1, charindex('/', columnname)-1)
where columnname like '%</%';

列にマークアップが含まれていた場合、それらのレコードを手動で更新することになりました。(私にとって幸運なことに、レコードは数件しかありませんでした)。

誰かがより良い解決策を持っている場合は、お気軽にコメントしてください。

ありがとう!

于 2012-12-20T14:49:48.000 に答える
2

悪いものは , で始まり、これ<は通常は見られない珍しい文字であるため、次のような通常のテキスト関数を使用します。

update mytable set
mycol = substr(mycol, 1, charindex('<', mycol) - 1)
where mycol like '%<%';

そして、すべてのテーブルのすべての列でこれを系統的に行います。

私は SQL Server に慣れていないので、使用する適切な関数を推測しているだけであることに注意してください。

SQL を編集して改善する人を歓迎します。

于 2012-11-30T06:14:48.663 に答える