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

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

WBOY
Freigeben: 2016-06-06 20:16:33
Original
1569 Leute haben es durchsucht

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>
Nach dem Login kopieren
Nach dem Login kopieren

回复内容:

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>
Nach dem Login kopieren
Nach dem Login kopieren

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

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

<code>htmlspecialchars()</code>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage