因为没有办法判断用户输入的数据是否安全, 可能含有和sql语句相冲突的字符,比如 '  " < >,
那就有一个办法, 把这些特殊字符处理一下,比如吧空格符号变成&nbsp;,这样sql语句就安全了,并且浏览器完全可以识别这些符号。

用户的输入有2中情况,

1 文章输入,插入数据库, htmlspecialchars -> 把某些可能和和sql语句相冲突的字符转义,但又不影响在网页上显示
2 url输入,显示在页面. -> 这个时候更要多测试不同情况, 真有http://localhost/local/?name=%27onmouseover=%27alert(1)

-------
htmlspecialchars('abc', ENT_QUOTES)

和之前想象的不同,body field在full html模式下,什么代码都能输入,因为sql语句不会和具体的value发生关系,只会和id/name之类的发生关系。

dpm(htmlspecialchars('q\'q"q\'>\<'));
//q'q&quot;q'&gt;\&lt; dpm(htmlspecialchars('q\'q"q\'>\<',ENT_QUOTES));
//q'q&quot;q'&gt;\&lt; 从这里可以看出htmlspecialchars的功能还包括吧\'这样的字符转成‘,然后看是否ent_quotes,决定是否把‘转成实体。

html 实体 => htmlspecialchars的更多相关文章

  1. js把预定义的html字符串转换为 HTML 实体 htmlspecialchars 输出html实体内容包括标签,而不自动转义标签,只显示内容,类似php的htmlspecialchars

    一.html字符串转换为 HTML 实体 htmlspecialchars function htmlspecialchars(str){                      str = str ...

  2. php中常用的字符串格式化函数

    ltrim():从字符串左删除空格或其他预定义字符串 rtrim():从字符串的末端开始删除空白字符串或其它预定义字符 trim():从字符串的两端删除空白字符和其他预定字符 str_pad():把字 ...

  3. jquery与php的HTML转义与反转义

    1.jquery (1)Html转义 var tmp = '<a href="https://www.baidu.com/">连接</a>'; var tm ...

  4. php 加密 解密 方法

    base64        Base64编码可用于在HTTP环境下传递较长的标识信息      base64_encode       base64_decodeserialize       可以将 ...

  5. PHP字符串的处理(四)-HTML标签的字符串格式化

    和html标签相关的字符串格式化 nl2br()  //在字符串中每个新行"\n"之前插入html换行符"<br />" <?php echo ...

  6. php 编码和解码的函数

    URL: urlencode(); //编码 urldecode(); //解码 URL与数组互转: parse_url () http_build_query() base64: base64_en ...

  7. 关于htmlspecialchars实体字符转码的问题

    php对post过来的数据进行实体字符转码,我的页面编码是gb2312,刚开始是这样: $post = htmlspecialchars ( $post); 取到的$post值为空,但是有时候是好的( ...

  8. html 实体和htmlspecialchars()

    HTML 中的预留字符必须被替换为字符实体. HTML 实体 在 HTML 中,某些字符是预留的. 在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签. ...

  9. xss绕过htmlspecialchars实体编码的姿势

    倘若是在script.input标签当中,即可突破.Payload ' oninput=alert`1` //      当要在input中输入内容时触发事件' oninput=alert`1` ' ...

随机推荐

  1. linux下samba环境搭建

    1.安装samba apt-get install samba samba-common 2.修改配置 /etc/samba/smb.conf 在最后添加以下内容即可实现每个用户访问自己的home目录 ...

  2. Codeforces Round #368 (Div. 2) B

    Description Masha wants to open her own bakery and bake muffins in one of the n cities numbered from ...

  3. #pragma 的使用

    #pragma 的使用 尽管 C 和 C++ 都已经有标准,但是几乎每个编译器 (广义,包含连接器等) 扩展一些 C/C++ 关键字. 合理地应用这些关键字,有时候能使我们的工作非常方便.下面随便说说 ...

  4. 怎样为DataTable设置主键及找行数据

    只要是数据集中都应该存在主键,以确定数据集中唯一的值.那么,我们要如何为DataTable设置主键及利用主键在DataTable索引值呢? 步骤/方法     为DataTable设置主键 DataT ...

  5. C# 加载xml文档文件及加载xml字符串

    //创建XmlDocument对象 XmlDocument xmlDoc = new XmlDocument(); //载入xml文件名 xmlDoc.Load(filename); //如果是xml ...

  6. MeshLab中进行点云配准

    MeshLab是一个开源.可移植和可扩展的三维几何处理系统,主要用于交互处理和非结构化编辑三维三角形网格.它支持多种文件格式: import:PLY, STL, OFF, OBJ, 3DS, COLL ...

  7. Why And When To Use Pre-Update and Pre-Insert Triggers In Oracle Forms

    Whenever we commit after entering data in Oracle Forms, many triggers fires during this event and al ...

  8. shell 标出输入、标准输出、错误输出

    shell中可能经常能看到:>/dev/null  2>&1  eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print ...

  9. C#计算某一些任务的执行时间(消耗时间)

    class Program { static void Main(string[] args) { System.Diagnostics.Stopwatch sw = new System.Diagn ...

  10. STL--stack

    stack--概述: 栈(Stack)是一种特殊的线性表,只能在某一端插入和删除的特殊线性表.它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶.栈也称为先进后出表(LIFO). ...