PHP如何防止外部提交表单?

时间:2021-08-25 19:28:15
来源判断试过了,可以伪造。
IP判断也试过了,可以伪造。
据说有种token机制,请问怎么弄呢?
提交页面:index.php 接收程序:api.php,请问该怎么写呢,谢谢各位大侠!

详细描述:
提交页面的代码:
<input type="text" style="text-align:center" id="c_href"></div>
<div onClick="submit()" class="btn">提交</div>
JS调用接口:$.ajax({url:"./php/api.php?url="+ c_href,dataType:"json",success:function(a){layer.closeAll();

现在人家直接外部提交http://www.aaa.com/php/api.php?url=http://www.111.com 就可以加入我的数据库,请问如何防止呢

11 个解决方案

#1


使用图片验证码,提交时需要填写验证码。

#2


token就是提交时,把参数加密,然后服务器解密参数,如果可以解开,就可以通过。
但这个和外部提交没什么关系。

#3


你js提交没有什么可以做加密的,因为都是明文。

#4


图片验证码不行的,给用户造成了使用难度。

#5


jQuery 的 ajax 会发送一个标识身份的头,你可据此判断提交是否来自 jQuery.ajax
这样就可以阻挡掉不知道有该标识的非法提交(不过他若看到了我的提示,想必他也会加上的)

一般的说,任何认证标识都是是由服务端发往浏览器的,所以不可能不被截获
但是只要你做的隐秘些,还是不易被发现的

#6


其实只要是客户端(js)请求的,都可以模拟。只能做得隐蔽点。

#7


正常的用户必须先访问index.php,提交后才会访问api.php,而不是直接访问api.php。
请问能否做一个判断:用户访问了index.php,才能访问api.php。如果用户没有访问index.php,直接访问api.php则退出。
谢谢!!!

#8


也就是在index.php页面,生成一个session值。然后在api.php页面判断该值是否正确,如果session值不正确则退出,正确则继续。

#9


如果你是在做网站,那么可以使用 session
如果你是在做 api,那么由于 cookie 不是 api 的标配,多半是要出问题的

#10


做网站哦,请问index.php和API.PHP如何写代码呢,谢谢版主大大!

#11


index.php 
session_start();
$_SESSION['标志']='值';

api.php
session_start();
if(! isset($_SESSION['标志']) || $_SESSION['标志'] != '值') exit '非法访问';

#1


使用图片验证码,提交时需要填写验证码。

#2


token就是提交时,把参数加密,然后服务器解密参数,如果可以解开,就可以通过。
但这个和外部提交没什么关系。

#3


你js提交没有什么可以做加密的,因为都是明文。

#4


图片验证码不行的,给用户造成了使用难度。

#5


jQuery 的 ajax 会发送一个标识身份的头,你可据此判断提交是否来自 jQuery.ajax
这样就可以阻挡掉不知道有该标识的非法提交(不过他若看到了我的提示,想必他也会加上的)

一般的说,任何认证标识都是是由服务端发往浏览器的,所以不可能不被截获
但是只要你做的隐秘些,还是不易被发现的

#6


其实只要是客户端(js)请求的,都可以模拟。只能做得隐蔽点。

#7


正常的用户必须先访问index.php,提交后才会访问api.php,而不是直接访问api.php。
请问能否做一个判断:用户访问了index.php,才能访问api.php。如果用户没有访问index.php,直接访问api.php则退出。
谢谢!!!

#8


也就是在index.php页面,生成一个session值。然后在api.php页面判断该值是否正确,如果session值不正确则退出,正确则继续。

#9


如果你是在做网站,那么可以使用 session
如果你是在做 api,那么由于 cookie 不是 api 的标配,多半是要出问题的

#10


做网站哦,请问index.php和API.PHP如何写代码呢,谢谢版主大大!

#11


index.php 
session_start();
$_SESSION['标志']='值';

api.php
session_start();
if(! isset($_SESSION['标志']) || $_SESSION['标志'] != '值') exit '非法访问';