Ваш Q складається з двох частин, і рішення jeroen, і рішення anubhava працюють для I частини - забороняючи доступ до / включає. Анубхава також працює для другої частини. Я віддаю перевагу останній, тому що я DOCROOT/.htaccess
все-таки використовую, і це зберігає весь такий контроль в одному файлі.
Однак я хотів обговорити це концепція "заборонити доступ до submit.php
". Якщо ви не хочете користуватися, submit.php
то навіщо це взагалі в DOCROOT? Я підозрюю, що відповідь тут полягає в тому, що ви використовуєте її як ціль дії в деяких формах і хочете, щоб вона була запущена лише тоді, коли форма подається, а не безпосередньо, наприклад, від спам-робота.
Якщо це правда, тоді ви не можете використовувати частину II anubhava, оскільки це призведе до відмови вашої форми. Що ви можете зробити тут - це (i) з .htaccess
чеком, щоб переконатися, що референт був вашою власною індексною сторінкою:
RewriteCond %{HTTP_REFERRER} !=HTTP://www.domain.com/index.php [NC]
RewriteRule ^submit\.php$ - [F]
І (ii) у вашому генераторі форм PHP index.php включені деякі приховані поля для часової позначки та перевірки. Перевірка може бути, скажімо, першими 10 символами MD5 часової позначки та деякою внутрішньою таємницею. Після обробки подання ви зможете (i) підтвердити, що часова марка та перевірка збігається, та (ii) мітка часу, скажімо, за 15 хвилин від поточного часу.
Це ви можете запобігти спаму, оскільки єдиним практичним способом, щоб спамер міг отримати дійсну пару часу / валідації, був би для розбору форми, але цей скребок матиме лише 15 хвилин життя.