一、预编译与sql注入
预编译SQL有两个优势:
1、性能更高:预编译SQL,编译一次之后会将编译后的SQL语句缓存起来,后面再次执行这条语句时,不会再次编译。(只是输入的参数不同)。
2、更安全(防止SQL注入):将敏感字进行转义,保障SQL的安全性。
预编译是一种在数据库操作中提前处理 SQL 语句的方式。在预编译中,SQL 语句的结构在执行前就已经确定,只有参数在执行时被传递和绑定。
SQL 注入是一种常见的数据库攻击手段。当应用程序对用户输入的数据未进行充分的验证和处理,直接将其拼接到 SQL 语句中并执行时,攻击者就有可能通过精心构造的输入数据来改变原本 SQL 语句的逻辑,从而获取未经授权的数据、执行非法操作或者破坏数据库。
预编译能够有效防止 SQL 注入,因为在预编译的过程中,SQL 语句的结构已经固定,后续传递的参数会被视为数据而不是可执行的代码部分,从而避免了攻击者通过输入来篡改 SQL 语句的结构和逻辑。
二、无字母数字webshell
这道题的限制:
1. webshell长度不超过35位
2. 除了不包含字母数字,还不能包含`$`和`_`
PHP7中
通过取反得到:
(~%8F%97%8F%96%91%99%90)();