Rumah > pembangunan bahagian belakang > tutorial php > javascript - 后台新增数据,需要屏蔽插入<script>脚本

javascript - 后台新增数据,需要屏蔽插入<script>脚本

WBOY
Lepaskan: 2016-06-06 20:16:33
asal
1568 orang telah melayarinya

1、做一个后台,用ajax来传数据到php接口,然后对数据库进行操作。假如新增一条数据为<script>alert("dfsaf");</script>的时候,应该怎么屏蔽呢?
2、试过在前台获取数据的时候用将每个字符串进行转义,试过在后台用mysql_real_escape_string()。可是数据库里面存的还是尖括号格式,并且还是会有弹窗。
3、用的这个函数进行的转义,然后网页上读取数据库的时候,alert语句还是照常执行了,求大神指点一二~

<code>function html_encode(str){   
  var s = "";   
  if (str.length == 0) return "";   
  s = str.replace(/&/g, ">");   
  s = s.replace(/, "<");   
  s = s.replace(/>/g, ">");   
  s = s.replace(/ /g, " ");   
  s = s.replace(/\'/g, "'");   
  s = s.replace(/\"/g, """);   
  s = s.replace(/\n/g, "<br>");   
  return s;   
}</code>
Salin selepas log masuk
Salin selepas log masuk

回复内容:

1、做一个后台,用ajax来传数据到php接口,然后对数据库进行操作。假如新增一条数据为<script>alert("dfsaf");</script>的时候,应该怎么屏蔽呢?
2、试过在前台获取数据的时候用将每个字符串进行转义,试过在后台用mysql_real_escape_string()。可是数据库里面存的还是尖括号格式,并且还是会有弹窗。
3、用的这个函数进行的转义,然后网页上读取数据库的时候,alert语句还是照常执行了,求大神指点一二~

<code>function html_encode(str){   
  var s = "";   
  if (str.length == 0) return "";   
  s = str.replace(/&/g, ">");   
  s = s.replace(/, "<");   
  s = s.replace(/>/g, ">");   
  s = s.replace(/ /g, " ");   
  s = s.replace(/\'/g, "'");   
  s = s.replace(/\"/g, """);   
  s = s.replace(/\n/g, "<br>");   
  return s;   
}</code>
Salin selepas log masuk
Salin selepas log masuk

a) php有个专门的函数用来将特殊字符转换为实体字符的,htmlspecialchars()。
b) 其实比较省事的办法就是在输出的时候做转义,比如smarty有 escape 之类的方法
c) 使用所见即所得编辑器,这种编辑器内置了script标记过滤
d) 如果只是不让用script标签,那么存入数据库之前preg_replace('/]*)>/i', '%lt;$1%gt;', $content)也行
e) 如果前台没有该问题的话,最省事的办法是对后台的操作人员加强教育,让他们别乱搞。

你这个JS函数没有什么问题,看看是不是往数据库里存的时候在哪里又给转回来了

<code>htmlspecialchars()</code>
Salin selepas log masuk
Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan