逃避数据的最佳方法JS-> PHP-> MySQL,反之亦然

为了以下目的,我必须使用哪些函数来编码/解码/转义/ striplash数据?

>从JS调用PHP脚本时如:page.php?data = unre_use _#_和_%_ in_URL_params
>当一个PHP脚本从JS接收一个参数时,如:not_use _#_和_%_ in_URL_params
>当使用以前从JS接收的数据从PHP运行MySQL查询以防止MySQL注入时(假设我需要在数据库中插入以下字符序列:““’)
>当我需要在MySQL语句中比较一个字段值,其中包含带有表达式的“`”序列
>当我需要从MySQL表中检索字段值并且该字段包含““’并且我想在PHP eval()macrosubstitution中使用它时
>当我必须在AJAX响应中将数据从PHP发送到JS并且它包含“`”字符时
>最后我必须在eval()之前回复JS

像这个图:

JS(编码) – > (解码)PHP(编码) – > (解码?)MySQL(编码?) – > (解码)MySQL(编码) – > (解码)JS

如果有人有时间和愉快的回答,或者如果我在这里犯了任何错误就纠正我,提前谢谢

解决方法:

> encodeURIComponent
> $_GET
> PDO bound parameters
> PDO bound parameters在数据库中.否则它只是PHP中的一个字符串
>不知道.你真的应该问你一个问题. eval闻起来很糟糕.
>选择一种数据格式并使用适当的编码. JSON很常见.
>你应该接近eval()的唯一时间是JS,当你在没有本机版本的浏览器中实现对json的支持时(你可以使用Crockford的json2.js).所以不要.

上一篇:php – 是一个带有转义字符串的mysql LIKE语句,其中包含未转义的通配符’%'(百分比)或’_'(下划线)易受攻击?


下一篇:php – symfony 1.4解释并且不会在模板中使用fetchOne()显示html标签