微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以使用 mysqli_prepare() 阻止在我的 php 网站上运行 javascript 作为输入吗

如何解决我可以使用 mysqli_prepare() 阻止在我的 php 网站上运行 javascript 作为输入吗

我正在使用 MysqL_prepare() 函数来避免在我的网站上进行 sql 注入。 我想知道它是否有效!!

当我使用 <script>alert("something")</script> 作为其中一个字段的输入时,脚本进入我的数据库,我想知道它是否正常!?!

我错过了什么吗?

或者prepare函数只是为了避免sql注入。

解决方法

不,您无法通过使用参数化查询来阻止在您的页面上执行 JavaScript。

使用参数化查询的全部目的是防止您的 SQL 在提供意外输入时中断。当您将数据与 SQL 分开绑定时,数据就不可能影响 SQL。例如:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost','user','pass','test');
$mysqli->set_charset('utf8mb4'); // always set the charset

$email = '1 or 1=1';
$stmt = $mysqli->prepare('SELECT user FROM users WHERE email=?');
$stmt->bind_param('s',$email);
$stmt->execute();

在这个例子中,电子邮件看起来像 SQL,但它永远不会被 MySQL 服务器视为 SQL。它是单独绑定的,因此 MySQL 在解析 SQL 后已经收到它。这有助于防止 SQL 注入。 永远不要转义您绑定的数据!

如您所见,准备好的语句仅保护 SQL。它们不会保护用户将 JavaScript 或 HTML 代码提交到您的数据库中。您需要添加额外的验证规则或将其视为任何其他数据。

为了防止 JavaScript 或 HTML 或任何其他数据破坏您的网站,您需要确保在输出时始终遵循最佳做法。您必须始终正确格式化数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。