允许jQuery的访问PHP文件,但拒绝一切
我有一个处理一个形式的PHP文件,称它为“形式,process.php”允许jQuery的访问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
}
)
})
问题的第一部分:
什么对我来说,以确保文件的形式,process.php的最佳方式,因此不能直接在www.website.com/form访问-process.php,但jQuery仍然可以访问它进行处理。问题的
第二部分:
在形状process.php我使用用htmlspecialchars()剥离潜在HTML输入到表单。有没有其他主要安全问题,人们会建议解决?
回答第一个问题
有没有办法让form-process.php
只能从jQuery的访问。您可以向执行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
当你想到一个字段包含URL,只接受的URL(FILTER_VALIDATE_URL
)。当你想到的电子邮件地址,只接受电子邮件地址(FILTER_VALIDATE_EMAIL
)等
当用户必须登录提交表单,你也可以,如果用户在form-process.php
文件登录以及验证。
你可以做什么,但也可以通过修改请求头来绕过它。 – 2014-09-24 06:30:07
“问题的第一部分” - 没有办法保护,也没有必要保护它。 “问题的第二部分” - 这取决于你将如何使用这些数据。 – Cheery 2014-09-24 06:30:21
@Cheery确定,因此,而不是拒绝访问我应该检查POST变量,如果没有设置,然后显示一些任意的消息?这些数据将用于使用PHPMailer生成电子邮件 – 2014-09-24 06:38:22