![]() |
1
51
这是一般的经验法则。
您希望变量能够清晰地表示数据。也就是说,如果你想储存一个叫“奥布莱恩”的人的姓氏,那么你肯定 不要 想要这些:
…因为,嗯,那不是他的名字:里面没有符号和斜线。当您获取该变量并将其输出到特定的上下文中(例如:插入到SQL查询中,或打印到HTML页中)时, 那个 当你修改它的时候。
你永远不想
保持数据干净,并且只针对当前特定的上下文进行转义。 |
![]() |
2
5
理论上,您可以在插入到数据库之前执行HTMLEntities,但如果需要原始文本,这可能会使进一步的数据处理更加困难。
|
![]() |
3
5
本质上,你应该使用
您还需要对所有用户输入应用健全性检查,以确保(例如)数值确实是数值等功能,例如 is_int , is_float 等等,在这一点上是有用的。(见 variable handling functions 有关这些函数和其他类似函数的详细信息,请参阅PHP手册的一节。) |
![]() |
4
0
我以前经历过,学到了两件重要的事情: 如果您从$\u post/$\u get/$\u请求中获取值并计划添加到数据库,请使用mysql\u real\u escape\u string函数清理这些值。不要用HTMLEntities对它们进行编码。 为什么不用HTMLEntities对它们进行编码,并将它们放到数据库中呢?好吧,事情是这样的-目标是使数据尽可能的有意义和干净,并且当您用HTML实体(如Jeff的狗变成Jeff的狗)编码数据时…这将导致数据上下文失去意义。如果您决定实现REST服务,并从数据库中获取该字符串并将其放入JSON中,那么它会像杰夫的狗一样出现,而这条狗并不漂亮。您还必须添加另一个函数来解码。 假设您要使用SQL“select*from table where field='jeff\'s dog'”搜索“jeff's dog”,您将找不到它,因为“jeff's dog”与“jeff"s dog”不匹配。“bad,eh?” 要将字母数字字符串(从char类型)输出到网页,请使用htmlentities-always! |
![]() |
hello_programmers · Mysql从其他表输出一列 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
![]() |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
|
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
|
Kugelfisch · 用php为数据库加密数据 1 年前 |