AJAX帖子返回403(有时)

时间:2017-10-30 22:25:10

标签: php jquery ajax

我有一个管理页面(由textarea组成)并使用ajax和PHP将我的帖子保存到数据库中。有时ajax返回403,有时不返回。 PHP工作得很好但是AJAX。

AJAX

serdata = 'text='+$("#ptext").val();
$.ajax({
  type:"POST",
  url:"../check/postcheck.php",
  data:serdata,
  cache:false,
  success:function(result){
    some html works
  },
  error:function(error){
    some html works
  }
});

我注意到,当我写一些特殊字符或一些在SQL中有意义的单词时,得到403.所以,我决定创建一个方法。例如,改为“SELECT”,我写quoquoSELECTquoquo。所以AJAX发送单词quoquoSELECTquoquo到PHP没有错误。 PHP将quoquoSELECT改为“SELECT”,可以完美地保存到数据库中。但是,有很多单词或字符。所以我必须在ajax和php之间做很多改动。

  • 所以,据我所知,这个问题与mod_security有关。服务器的防火墙不接受某些单词和字符。但我不想因为SQL注入而禁用mod_security。我只为几个文件禁用了mod_security。
  • 如果没有,有没有简单的方法来实现这一目标。我创建了至少30个更改,但仍然会出现一些新单词或简单字符的错误。所以我厌倦了一次又一次地改变单词和字符。

错误和成功的一些例子,

AJAX sends quoquoselectquoquo , PHP changes it to "select" , no error.
AJAX sends quoquoselect" , PHP changes it to "select" , no error.
AJAX sends "select" , error 403.
AJAX sends (select) , sometimes error 403, sometimes no error
AJAX sends prnthsselect) , PHP changes it to (select) , no error.
AJAX sends & , error 403.
AJAX sends ndsymbl , PHP changes it to & , no error.

并且列表继续......

1 个答案:

答案 0 :(得分:0)

尝试将其关闭Mod Security,然后查看是否可行。 我最近在从ajax调用到php脚本中遇到403错误时遇到了麻烦-如果帖子的内容包含单词“ include”,则将显示403错误。关闭mod-security使其起作用,直到我们发现存在错误的规则。