スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
webadm | 投稿日時: 2021-2-25 20:57 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3107 |
自分で投稿した記事を自分で編集できなくなった件 以前に書いた記事で後で判った事を追記しようと編集をクリックしたら、
引用: 新規登録してから間もないので、管理者があなたのレベルを上げて投稿を許可するまで待たなければなりません。 直ぐにレベルを上げてもらいたい場合は、管理者に直接メールをすることができます。 昇進した場合、このページをリロードするだけでレベルが有効になります。 なるページが表示されて編集できない罠(´Д`;) Webmasterグループに登録されているメンバーであればプログラム上では自動的に最高レベル10に昇格するはずなんだが、どうもそれが機能していないぽい。 他のモデレータ権限のあるアカウントだと問題なく編集画面が表示されるので記事の更新はできたものの、気になる。 以前はそんなことはなかったので、どこかの時点で狂いが生じたのかもしれない。 xoopsのmysqlデータベースを見てみようと思ったが、最新のMySQL Workbenchだとimport/restoreは便利だが、昔のMySQL Administoratorにあったようなデータベースデータの直接編集機能が無い(あるのかもしれないがQueryメニューしか見当たらない)。 仕方がないので、以前にバックアップ用にImportしたデータベースのsql dumpファイルを見てみると、当該ユーザーアカウントのWordpress user_levelが0になっていることが判明。 つまりのところ登録ユーザーでないことになっているわけだが、いつからそうなった? もしかしてmailサーバーを有効にした時点でホールを突かれてSQL ijectionで悪戯されたのか? とりあえず、10年前のMySQL Administoratorがインストールされた、以前はサーバー管理用や海外出張用に使っていた古いIBM Thinkpad(Windows 2000)を取り出してきて問題のuser_levelを10に変更。 これで問題のページは表示されなくなり、以前の通りに戻った。 現在立ち上げ中のWandboardベースのサーバーでも先日データベースをimportしてrestoreしたら同じ状態になったのでどうもある時点からデータベースの特定ユーザーアカウントのuser_levelが0リセットされた疑いがある。 時間がある時に少し原因を調べてみよう。 |
webadm | 投稿日時: 2021-2-26 21:55 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3107 |
Re: 自分で投稿した記事を自分で編集できなくなった件 その後原因を調査したところ、驚愕の事実が判明。
wandboardにimport後にwandboardでもwebadmで投稿の編集が出来なくなる症状が出たdatabase dumpファイルを精査したところ、webadmユーザーのxoops_wp_usersテーブルエントリに削除マークがセットされていることが判明。 wordpressモジュールを利用できるユーザーは、予めxoopsにユーザー登録したユーザーが自動的に反映される仕組みだけど、ユーザーを削除してもxoops_wp_usersテーブルの当該エントリはX_DELETED_Xマークがセットされた状態になる。 このX_DELETED_XマークがセットされたWebmasterグループのユーザーがwordpressでなにか記事を変更しようとすると問題のページが表示されるということらしい。 xoops_usersテーブルからは、webadmユーザーは削除されていないためログインは出来るものの、wordpress上では削除されたユーザー扱いのために想定しない挙動が出たと思われる。 その後いろいろユーザーアカウントの編集操作を行った時点でxoops_wp_usersのwebadmエントリからはX_DELETED_Xマークは消失したので、以降は問題が解消したことに。 ちなみにuser_levelを10にすると、wordpressの管理画面では-10と表示される。webadmはWebmasterグループなので、その値は無視されて自動的に10に昇格するので関係なかった。 要するに、何者かが(自分か?)xoops_wp_usersテーブルのwebadmエントリにX_DELETED_Xマークをセットしたのが原因と思われる。 部外者が外部からそうした操作が可能なのかもしれない、やはりSQL injectionか、はたまた自分がぼけて操作ミスしたのか? SQL injectionというハッキングの常套手段は、サーバー上のプログラムで、最終的にSQL inqueryの中に挿入されるような文字列にあたかも別の任意のSQL inqueryを挿入して実行させるもの。 昔はそんなことをする悪意を持った人間が現れることを想定していなかったので、どんどんやりまくられていたんだけどね。 その後は用心して外部から与えられた文字列は精査して悪意のあるSQL inqueryが含まれていないかチェックしたり、あった場合には拒否するか取り除くなどの面倒な処理を施すことが必須になった。 もしかして誰かにやられたのかも。 古いxoopsやwordpressは、SQL injectionが猛威を振るう前の時代に書かれたものなので、実装は単純明快なため穴だらけということに。 やれやれ(´Д`;) |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |