Bu ben ne olduğunu,
- Kendi web sitesinde, gizli bir dize oluşturun. Ben HMAC (anahtar $ _SERVER ['REMOTE_ADDR']) kullanın.
- Javascript var içinde gizli yazın.
- AJAX çağrısı üzerine, bir parametre olarak bu dizesi iletirsiniz.
- AJAX sunucu üzerinde, yine karma yapmak. Bu parametre ile eşleşen varsa, çağrı sayfanızdan olduğunu.
EDIT: Kod örnekleri,
Web sitenize, bunu,
$key = 'supersecretkey'; // This is your security, don't expose this
$nonce = rand();
$timestamp = time();
$signature = hash_hmac('sha1', $_SERVER['REMOTE_ADDR'] . $nonce . $timestamp, $key);
Sayfaya değişkenler yazdırın,
<script type="text/javascript">
<?php
echo " var signature = '" . $signature . "';\n";
echo " var nonce = '" . $nonce . "';\n";
echo " var timestamp = '" . $timestamp . "';\n";
?>
</script>
AJAX arama yaptığınızda, sunucu 3 parametreleri geçirmek,
http://example.com?signature=...&nonce=...×tamp=...
AJAX sunucu üzerinde, tekrar hesaplama yapmak,
$key = 'supersecretkey'; // This is your security, don't expose this
$nonce = $_REQUEST['nonce'];
$timestamp = $_REQUEST['timestamp'];
$signature = hash_hmac('sha1', $_SERVER['REMOTE_ADDR'] . $nonce . $timestamp, $key);
if ($signature == $_REQUEST['signature'])
// the call if from my page.
Ayrıca replay (oturum veya veri mağaza gerekir) için para ve seferlik damgası Çek değildir olabilir.