2016-11-19 5 views
0

test.phpform action ="<?php echo $_SERVER[PHP_self]"?>にフォームを作成すると、ハッキングされる可能性があります。私はそれがhtmlspecialchars()によって確保できると思います。しかし、もし私が代わりに<form action ="test.php">を使用していれば。それはハッキングされません。ここでの違いは何ですか?

url test.php/blah blahを編集すると、ソースコード内のフォームアクションになりますが、form action="test.php"の場合は発生しません。それは同じものではありませんか? test.phpおよび$_server['PHP_self']

+1

「ハッキングできる」と定義します。 –

+1

'action'属性を省略して、フォームを現在のURLに送信させることも考えられます。 – Brad

答えて

1

<form action ="test.php">をHTMLに割り当てると、このコードは静的であり、サーバー側では操作できません。世界は安全だった場合

と:あなたがグローバル$_SERVER['PHP_SELF']を割り当てた場合、それらがそうのように、このコードを操作するために、そしてあなたのページ内のこのエントリは、それが可能となるアドレスバーで見つかったユーザーのURLに依存して動的です...で生きるための信頼できる場所

ブラウザのURL:rのための今http://www.test.com/html/form.php

<form action="/html/index.php" method="post"> 

EAL世界....

ブラウザのURL:

:これは、それは次のようになりますので、効果的にスクリプトをサニタイズあなた$_SERVER['PHP_SELF']htmlspecialchars()内部の機能を囲むことで回避できます http://test.com/form.php/%22%3E%3Cscript%3Ealert('xss')%3C /script%3E%3Chack%22

<form action="/html/index.php/"><script>alert('xss')</script><hack"" method="post"> 

<form action="/html/index.php/&quot;&gt;&lt;script&gt;alert('xss')&lt;/script&gt;&lt;hack&quot;" method="post"> 
関連する問題