我有一个处理表单的PHP文件,称之为" form-process.php"
在JS文件中,我捕获表单的提交,并使用jQuery .post()将信息发送到此PHP文件。
$('#form').submit(function(e) {
e.preventDefault();
var form = $(this),
action = form.attr('action');
$.post(
action,
form.serialize(),
function(data) {
// display results on page
}
)
})
问题的第一部分:
保护文件form-process.php的最佳方式是什么,所以无法直接访问www.website.com/form-process.php,但jQuery仍然可以访问它用于处理。
问题的第二部分:
在form-process.php中,我使用htmlspecialchars()来删除输入到表单中的潜在HTML。是否有任何其他主要的安全问题建议解决?
答案 0 :(得分:0)
回答第一个问题
无法仅通过jQuery访问form-process.php
。您可以向执行form-process.php
所需的POST数据添加哈希值,但潜在的攻击者只需查看您的JavaScript代码即可读取该哈希值。您可以对代码进行模糊处理,但攻击者仍然可以检查通过AJAX发送的数据,并且仍然可以获取哈希值。 jQuery在客户端执行,无论您如何尝试保护代码,攻击者都可以复制您的所有安全机制。
回答第二个问题
正确过滤数据是保护form-process.php
的最佳方式。分析您只能接受的数据类型,并创建仅接受此类数据的过滤器,而不是其他任何数据。看看这个功能:
http://php.net/manual/en/function.filter-input.php
http://php.net/manual/en/filter.filters.validate.php
如果您希望某个字段包含网址,请仅接受网址(FILTER_VALIDATE_URL
)。如果您需要电子邮件地址,请仅接受电子邮件地址(FILTER_VALIDATE_EMAIL
)等
当用户必须登录才能提交表单时,您还可以验证用户是否也在form-process.php
文件中登录。